2015-05-07 4 views
6

Я пытаюсь отправить данные в коллекционер Google Analytics с помощью Zend_Http_Client и POST. У меня есть массив $postParams, который включает мои идентификаторы отслеживания, cid и hit, и я добавляю значения этого массива к моему клиенту через setParameterPost().Тип содержимого-ошибка при использовании Zend_Http_Client

Вот соответствующая часть моих действий:

$client = new Zend_Http_Client('https://ssl.google-analytics.com/debug/collect'); 
foreach ($postParams as $postParam => $postValue) { 
    $client->setParameterPost($postParam, $postValue); 
} 
$response = $client->request(); 

При вызове этого сценария я получаю следующее сообщение об ошибке:

Cannot handle content type '' automatically. Please use Zend_Http_Client::setRawData to send this kind of content.

Это брошенные в методе _prepareBody() в Zend_Http_Client. Когда я добавляю echo($this->enctype); die();, я получаю NULL.

Я бы добавил $client->setEncType(); к моему коду, но данные равны.
Кто-нибудь знает, что мне здесь не хватает? Действительно ли я должен использовать setRawData?

Заранее благодарен!

Обновление: $client->setParameterPost('postParams', $postParams); тоже не будет работать. Он вызывает ту же ошибку.

ответ

3

Этот ответ привел меня обратно на трек: 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); 
+0

Спасибо, @ DAVID-caunt! –

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