Невозможно получить правильный ответ от сервера, используя CURL_EXEC в PHP.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Невозможно получить правильный ответ от сервера, используя CURL_EXEC в PHP.

Сообщение Anonymous »

У меня есть команда Symfony, которая получает тарифы на доставку от перевозчиков. Если я передам эти параметры с помощью Curl из CLI, я получу ответ. Однако при передаче тех же параметров из PHP сервер возвращает 500 Внутренняя ошибка сервера, возможная проблема с анализом ваших данных.
Это завиток из CLI, который работает

Код: Выделить всё

curl \
--location 'https://shippingcarrier.com/rate' \
--header 'Accept: */*' \
--header 'Content-Type: application/json' \
--header 'Authorization: 999999|WGYFYSPMML' \
--request POST \
--data '{
"SenderName": "",
"SenderSuburb": "Suburb1",
"SenderState": "State1",
"SenderPostcode": "9999",
"ReceiverName": "",
"ReceiverSuburb": "Suburb2",
"ReceiverState": "State2",
"ReceiverPostcode": "8888",
"ServiceType": "",
"CustomerName": "Myname",
"CustomerCode": "888888",
"DangerousGoods": "",
"DimensionsUOM": "",
"WeightUOM": "",
"AdditionalServiceList": "",
"SenderIsResidential": "",
"ReceiverIsResidential": "",
"Rows": [{"QtyDecimal":1, "Weight":2.5, "Length": 11, "Width": 10, "Height": 55, "Description": "Carton"}
]}'
Этот фрагмент приводит к ошибке HTTP 500

Код: Выделить всё

$domainname = https://shippingcarrier.com/;
$AccountNumber = 999999;
$APIKey = WGYFYSPMML;

$fields = array(
'SenderName' => '',
'SenderSuburb' => $shipment[$count]['from_locality'],
'SenderState' => $shipment[$count]['from_stateorcounty'],
'SenderPostcode' => $shipment[$count]['from_postcode'],
'ReceiverName' => '',
'ReceiverSuburb' => $shipment[$count]['to_locality'],
'ReceiverState' => $shipment[$count]['to_stateorcounty'],
'ReceiverPostcode' => $shipment[$count]['to_postcode'],
'ServiceType' => '',
'CustomerName' => 'Myname',
'CustomerCode' => '888888',
'DangerousGoods' => '',
'DimensionsUOM' => '',
'WeightUOM' => '',
'AdditionalServiceList' => '',
'SenderIsResidential' => '',
'ReceiverIsResidential' => '',
'Rows' => '[{' .
'"QtyDecimal":' . '1' . ',' .
'"Length":' . $shipment[$count]['parcel_length'] . ',' .
'"Height":' . $shipment[$count]['parcel_height'] . ',' .
'"Width":' . $shipment[$count]['parcel_width'] . ',' .
'"Weight":' . $shipment[$count]['parcel_weight'] . ',' .
'"Description":' . 'Carton' .
'}]'
);

$payload = json_encode($fields, JSON_FORCE_OBJECT);

$resourceurl = $domainname . 'rate';
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, $resourceurl);
curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch1, CURLOPT_POST, true);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_TIMEOUT, 4);
curl_setopt($ch1, CURLINFO_HEADER_OUT, true);
curl_setopt($ch1, CURLOPT_HEADER, true);
curl_setopt($ch1, CURLOPT_HTTPHEADER, array(
'Accept: */*',
'Content-Type: application/json',
'Authorization: ' . $AccountNumber . '|' .  $APIKey,
));

curl_setopt($ch1, CURLOPT_POSTFIELDS, $payload);
$server_response = curl_exec($ch1);
curl_close($ch1);

Когда я дамп заголовков и полезных данных с помощью следующих операторов

Код: Выделить всё

var_dump(curl_getinfo($ch1, CURLINFO_HEADER_OUT));
var_dump($payload);
var_dump($server_response);
Я получаю следующее

Код: Выделить всё

string(167) "POST /rate HTTP/1.1
Host: shippingcarrier.com
Accept: */*
Content-Type: application/json
Authorization: 999999|WGYFYSPMML
Content-Length: 524

"
string(524) "{"SenderName":"","SenderSuburb":"Suburb1","SenderState":"State1","SenderPostcode":"9999","ReceiverName":"","ReceiverSuburb":"Suburb2","ReceiverState":"State2","ReceiverPostcode":"8888","ServiceType":"","CustomerName":"Myname","CustomerCode":"88888888","DangerousGoods":"","DimensionsUOM":"","WeightUOM":"","AdditionalServiceList":"","SenderIsResidential":"","ReceiverIsResidential":"","Rows":"[{\"QtyDecimal\":1,\"Length\":11,\"Height\":55,\"Width\":10,\"Weight\":2.5,\"Description\":Carton}]"}"

string(289) "HTTP/1.1 500 Internal Server Error
cache-control: private
content-type: application/json; charset=utf-8
date: Mon, 06 Jan 2025 14:10:30 GMT
content-length: 122
Я занимаюсь отладкой уже несколько дней, но особого успеха не добился. Есть какие-нибудь указания на то, что может быть не так в $payload?

Подробнее здесь: https://stackoverflow.com/questions/793 ... xec-in-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»