2015-05-07 8 views
6

Sto provando a inviare dati al collector di Google Analytic con Zend_Http_Client e POST. Ho un array $postParams che include il mio ID di tracciamento, i tipi cid e hit e aggiungo i valori di questo array al mio client tramite setParameterPost().Errore di tipo di contenuto durante l'utilizzo di Zend_Http_Client

Ecco la parte rilevante della mia azione:

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

Quando si chiama questo script ottengo il seguente errore:

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

E 'gettato nel metodo _prepareBody() in Zend_Http_Client. Quando aggiungo uno echo($this->enctype); die();, ricevo NULL.

Aggiungerei $client->setEncType(); al mio codice ma i dati sono chiari.
Qualcuno ha idea di cosa mi manca qui? Devo davvero usare setRawData?

Grazie in anticipo!

Aggiornamento: $client->setParameterPost('postParams', $postParams); non funziona anche. Genera lo stesso errore.

risposta

3

Questa risposta mi ha portato di nuovo in pista: 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

Grazie, @ David-Caunt! –