2015-05-07 3 views
6

Ich versuche Daten mit Zend_Http_Client und POST an den Collector von Google Analytic zu senden. Ich habe ein Array $postParams, das meine Tracking-ID, CID und Hit-Typen enthält, und ich füge die Werte dieses Arrays zu meinem Client über setParameterPost().Inhaltstyp-Fehler bei Verwendung von Zend_Http_Client

Hier ist der relevante Teil meiner Aktion:

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

Wenn dieses Skript aufrufen ich die folgende Fehlermeldung erhalten:

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

Es ist in der _prepareBody() Methode in Zend_Http_Client geworfen wird. Wenn ich eine echo($this->enctype); die(); dort hinzufüge, erhalte ich NULL.

Ich würde $client->setEncType(); zu meinem Code hinzufügen, aber die Daten sind klar.
Hat jemand eine Idee was mir hier fehlt? Muss ich wirklich setRawData verwenden?

Vielen Dank im Voraus!

Update: $client->setParameterPost('postParams', $postParams); wird nicht funktionieren. Es löst denselben Fehler aus.

Antwort

3

Diese Antwort brachte mich wieder auf die Strecke: 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

Danke, @ david-Caunt! –