Я пытаюсь отправить данные в коллекционер Google Analytics с помощью Zend_Http_Client и POST. У меня есть массив $postParams
который включает мои идентификаторы отслеживания, cid и hit, и я добавляю значения этого массива к моему клиенту с помощью setParameterPost()
.
Вот соответствующая часть моего действия:
$client = new Zend_Http_Client('https://ssl.google-analytics.com/debug/collect'); foreach ($postParams as $postParam => $postValue) { $client->setParameterPost($postParam, $postValue); } $response = $client->request();
При вызове этого скрипта возникает следующая ошибка:
Невозможно обрабатывать тип контента «автоматически». Для отправки такого контента используйте Zend_Http_Client :: setRawData.
Он добавлен в метод _prepareBody()
в Zend_Http_Client. Когда я добавляю echo($this->enctype); die();
echo($this->enctype); die();
там, я получаю NULL
.
Я бы добавил $client->setEncType();
к моему коду, но данные просты.
Кто-нибудь знает, что мне здесь не хватает? Мне действительно нужно использовать setRawData
?
Заранее спасибо!
Обновление: $client->setParameterPost('postParams', $postParams);
тоже не будет работать. Он вызывает ту же ошибку.
Этот ответ вернул меня в нужное русло: https://stackoverflow.com/a/7407491/3218828
$rawData = ''; foreach ($postParams as $postParam => $postValue) { if ($rawData !== '') { $rawData .= '&'; } $rawData .= $postParam . '%5B%5D=' . $postValue; } $client = new Zend_Http_Client(); $client->setRawData($rawData); $client->setUri('https://ssl.google-analytics.com/debug/collect'); $client->request(Zend_Http_Client::GET);