6

我正在尝试使用 Zend_Http_Client 和 POST 将数据发送到 Google Analytic 的收集器。我有一个数组$postParams,其中包括我的 tracking-ID、cid 和 hit 类型,我将此数组的值通过setParameterPost().

这是我的 Action 的相关部分:

$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();时,我收到NULL.

我会添加$client->setEncType();到我的代码中,但数据很简单。
有人知道我在这里缺少什么吗?我真的必须使用setRawData吗?

提前致谢!

更新:$client->setParameterPost('postParams', $postParams);也行不通。它抛出相同的错误。

4

1 回答 1

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);
于 2015-05-11T06:54:50.720 回答