2013-05-02 137 views
0

我试图发送批量请求到Piwik跟踪API(/piwik.php),我遇到了问题。当我发送请求(从PHP脚本阿贾克斯,卷曲和fiddler2),我收到以下内容:提交POST请求到Piwik.php

Debug enabled - Input parameters:<br/>array () 
token_auth is authenticated! 
Loading plugins: { Provider,Goals,UserCountry } 
Current datetime: 2013-05-02 16:02:27 
The request is invalid: empty request, or maybe tracking is disabled in the config.ini.php via record_statistics=0 

我的帖子是这样的:

{"requests":["%3Fidsite%3D1%26url%3Dhttp%3A%2F%2Fexample.org%26action_name%3DTest+bulk+log+Pageview%26rec%3D1"],"token_auth":"mytokenhere"} 

哪个是例子直接从他们的网站。我已经确定将内容类型设置为“Content-Type:application/json”,并且我的配置具有明确定义的record_statistics = 1。

根据文档,这应该都可以工作,但我仍然得到空的请求。 import_logs.py脚本也可以工作,所以我知道一般批量导入没有被破坏,但我不知道如何让程序接受我的数据。有没有人有过运气?

谢谢!

回答

1

也许你的请求的问题是你的查询字符串是URL编码的,但它们不需要是因为它们是POST主体的一部分。

您的文章应该是这样的,而不是:

{"requests":["?idsite=1&url=http://example.org&action_name=Test+bulk+log+Pageview&rec=1"],"token_auth":"mytokenhere"} 

见的例子在文档的批量跟踪API:http://piwik.org/docs/tracking-api/reference/#toc-advanced-bulk-tracking-requests

+0

感谢nullability。这是有点这样,他们的文档是错误的json字符串需要被发送。我能够在我的服务器上安装Fiddler,并在运行他们的导入脚本时了解了如何构建请求。 – 2013-05-03 14:26:49

1

想通了什么事。他们的文档在需要格式化请求的方式上是不正确的。首先,URL编码数据是不必要的。其次,JSON字符串必须是这样的:

{ 
"requests": [ 
    { 
     "apiv": "1", 
     "bots": "1", 
     "idsite": "1", 
     "download": "", 
     "cdt": "", 
     "dp": "", 
     "url": "", 
     "urlref": "", 
     "cip": "", 
     "ua": "", 
     "_cvar": { 
      "1": [ 
       "Not-Bot", 
       "Mozilla/5.0+(Macintosh;+U;+Intel+Mac+OS+X+10_6_5;+en-US)+AppleWebKit/534.10+(KHTML,+like+Gecko)+Chrome/8.0.552.231+Safari/534.10" 
      ] 
     }, 
     "rec": "1" 
    } 
    ] 
} 

并非所有那些数据块需要发送,但是这是必要的格式。之后,这只是数据清理。

+0

这不适用于最新的Piwik 2.遵循http://developer.piwik.org/api-reference/tracking-api#bulk-tracking作品中的用户指南。 – NickT 2014-05-23 03:31:52

+0

感谢NickT,这是大约一年前的事情,我与他们的开发者来回回顾了这一点,因为使用Fiddler我可以看到发送的内容和他们的文档与实际需要发送的内容不匹配。很高兴看到现在一切都在他们的代码中正确排队 – 2014-05-23 13:20:14