Невозможно сделать успешный вызов curl put в PHP - PullRequest
0 голосов
/ 20 декабря 2018

Я взаимодействую с внешним restful API.Я смог успешно выполнить запросы GET и POST, но мои вызовы PUT работают странно.

Когда я пытаюсь выполнить задачу с помощью Postman, все работает как положено.

Это мои параметры почтальона:

URl: https://externalapi.com.br/1/sales/0000-8021-46db-9919-8728fec13556/void?amount=15700

Заголовки: MerchantKey: mykey Заголовки: MerchantId: myid

Мой "код скручивания" такой:

$ch = curl_init('https://externalapi.com.br/1/sales/0000-8021-46db-9919-8728fec13556/void?amount=15700');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'MerchantId: ' .  $this->merchant_id,  'MerchantKey: ' .  $this->merchant_key ));


$res = null;

try{

    $res = curl_exec($ch);


}catch (Exception $e){

    return $e->getMessage();

}


return $res;

Мой код curl выводит это

 Length Required
 HTTP Error 411. The request must be chunked or have a content length.

1 Ответ

0 голосов
/ 20 декабря 2018

Я добавил Content-Length: 0 в заголовок.Это было необходимо только при использовании cUrl с PUT.

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'MerchantId: ' .  $this->merchant_id,  'MerchantKey: ' .  $this->merchant_key, 'Content-Length: 0' ));
...