Zend_Http_Client - Ошибка ответа - логическое значение недействительно
Я пытаюсь выяснить, почему я получаю недопустимую логическую ошибку при публикации на 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 }]
}
Параметры сообщения
collectionOnDelivery логическое
консигнационный объект []
collectionDate date
консолидировать логическое
2 ответа
Я в итоге перешел на 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);
Значения HTTP Post являются строками, поэтому при попытке передать логическое значение вы получаете сообщение об ошибке. Попробуйте заменить ваши логические значения на строки:
'collectionOnDelivery' => "false",