我想弄清楚为什么我得到一个无效的布尔错误时张贴到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);