2015-05-07 29 views
6

Próbuję wysłać dane do kolektora Google Analytic za pomocą Zend_Http_Client i POST. Mam tablicę $postParams, która zawiera moje typy śledzenia, identyfikatora i trafienia i dodaję wartości tej tablicy do mojego klienta przez setParameterPost().Błąd typu zawartości podczas używania Zend_Http_Client

Tutaj jest odpowiednia część mojego działania:

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

Przy wywołaniu skryptu pojawia się następujący błąd:

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

To rzucony w metodzie in Zend_Http_Client _prepareBody(). Kiedy dodaję tam echo($this->enctype); die();, otrzymuję NULL.

Dodałbym $client->setEncType(); do mojego kodu, ale dane są proste.
Czy ktoś ma pojęcie, czego tu brakuje? Czy naprawdę muszę używać setRawData?

Z góry dziękuję!

Aktualizacja: $client->setParameterPost('postParams', $postParams); też nie działa. Zgłasza ten sam błąd.

Odpowiedz

3

Ta odpowiedź przyniósł mi z powrotem na właściwe tory: 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

Thanks @ david-caunt! –