Zend_Http_Client -响应错误-布尔值无效


Zend_Http_Client - Response Error- Boolean Invalid

我想弄清楚为什么我得到一个无效的布尔错误时张贴到URL。下面是错误和代码。

如果有什么想法,我也可以提供更多的细节。

错误响应:

Array( 
    [error] => Array ( 
        [errorCode] => 1008 
        [errorType] => Validation 
        [errorMessage] => Invalid boolean value 
        [obj] => collectionOnDelivery 
    ) 
    [data] => 
)
代码:

$client = new Zend_Http_Client($url);
$client->setMethod(Zend_Http_Client::POST);
$client->setHeaders('Host', 'url.api.com');    
$client->setHeaders(Zend_Http_Client::CONTENT_TYPE, 'application/json');
$client->setHeaders('Accept', 'application/json');   
$client->setHeaders('Content-Length', strlen($payload)); 
$client->setParameterPost(
    array(
        'collectionOnDelivery' => false,
        'jobId' => null,
        'invoice'  => null,
        'collectionDate' => $date,
        'consolidate' => false,
        'consignment', $payload
    ));
$response = $client->request();      
API文档

Example Request is shown below:
POST /url HTTP/1.1
Host: url.api.com
Content-Type: application/json
Accept: application/json
Content-Length: 2416
{
"job_id": null,
"collectionOnDelivery": false,
"invoice": null,
"collectionDate": "2012-05-01T09:00:00",
"consolidate": false,
"consignment": [{ // Array of details about consignment }]
 }

Post参数

collectionOnDelivery布尔

委托对象[]

collectionDate日期

巩固布尔

HTTP Post值是字符串,所以当你试图传递一个布尔值时,你会得到一个错误。尝试用字符串替换布尔值:

'collectionOnDelivery' => "false",

我最终改为setRawData作为发送JSON数据的正确方法。

setRawData第一次失败的原因是它要求寄售数组在另一个数组内。翻译[{到PHP是我的错误,最后,这是一个双数组。

$content = array(
            'collectionOnDelivery' => false,
            'job_id' => null,
            'invoice'  => null,
            'collectionDate' => $date,
            'consolidate' => false,
            "consignment" => array(array(/*ARRAY OF DETAILS*/)));
$payload =  Zend_Json::encode($content);

然后按如下方式设置帖子

$client->setRawData($payload);