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",
Другие вопросы по тегам