2013-05-02 2 views
0

Я пытаюсь отправить массовые запросы в Piwik tracking api (/piwik.php), и у меня возникает проблема. Когда я посылаю запрос (от PHP скрипт через AJAX, завиток и от 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 на моем сервере и прослушал его, когда я запустил свой скрипт импорта и выяснил, как должен быть сформирован запрос. –

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

+0

Спасибо NickT, это было примерно год назад, и я собирался вернуться к ним вместе со своими разработчиками, потому что, используя Fiddler, я мог видеть, что было отправлено, а их документы не совпадают с тем, что на самом деле нужно отправить. Рад видеть, что сейчас все правильно вставлено в их коде –

Смежные вопросы