使用Zend_Http_Client时的内容类型错误

Ste*_*old 6 php post zend-framework zend-http-client

我正在尝试使用Zend_Http_Client和POST将数据发送到Google Analytic的收集器.我有一个数组$postParams,包括我的跟踪ID,cid和命中类型,我通过这个数组添加到我的客户端的值setParameterPost().

这是我的行动的相关部分:

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

调用此脚本时,我收到以下错误:

无法自动处理内容类型''.请使用Zend_Http_Client :: setRawData发送此类内容.

它被抛入_prepareBody()Zend_Http_Client 中的方法中.当我在echo($this->enctype); die();那里添加时,我会收到NULL.

我会添加$client->setEncType();到我的代码但数据很简单.
有谁知道我在这里缺少什么?我真的要用setRawData吗?

提前致谢!

更新:$client->setParameterPost('postParams', $postParams);也不会有效.它会抛出同样的错误.

Ste*_*old 3

这个答案让我回到正轨:/sf/answers/518524401/

$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);
Run Code Online (Sandbox Code Playgroud)