Ошибка «Неподдерживаемый тип носителя» связана с тем, что вы не отправляете действительный JSON.Поскольку вы создаете $data
как строку, а затем json_encode()
ее, вы получаете данные с двойным кодированием, которые сервер не распознает.Код, показанный в вопросе, приведет к выводу $data_string
в виде
{"customer":"\r\n\"request_id\" : \"10\",\r\n \"value\": \"false\"\r\n"}
. Используемая версия будет
{"customer": { "request_id" : "10", "value": "false" } }
. Чтобы получить это, вы должны написать кодсделав объект / массив PHP, а затем закодировав этот объект:
$data = array("request_id" => "10", "value" => "false");
$data_string = json_encode(array(
"customer" => $data
));
Вот демонстрационная версия , показывающая вывод приведенного выше кода.
Вы также можете сократитьэтот код:
$data = array(
"customer" => array(
"request_id" => "10",
"value" => "false")
)
);
$data_string = json_encode($data);
Ваша ошибка заключалась в том, что вы путали создание данных в коде PHP с их кодированием в текстовом формате передачи (в данном случае JSON).Вместо этого вам нужно создавать данные в PHP с использованием (вложенных) ассоциативных массивов и регулярных массивов таким образом, чтобы при передаче их в json_encode () выходная полезная нагрузка имела правильный формат, требуемый API.