2013-05-02 134 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