Реализация запросов к серверу CDEK по API на PHP на примере получения авторизационного токена и калькуляции.

Если Вы скопировали код скрипта из листинга выше, создали файл apiKeys.php и указали в нём переменные $clientId и $clientSecret(или указали их в файле основного скрипта) в браузере Вы должны увидеть результат расчёта доставки полученный от API сервера CDEK аналогичный тому, что я привёл на скринсшоте ниже.

Пример API ответа сервер CDEK после расчёта стоимости доставки

Причины возникновения ошибки "Unsupported Media Type" с кодом 415

Если при запросе информации по api с сервера СДЭК у Вас возникла ошибка Unsupported Media Type с статусом 415, причиной её возникновения является отсутствие в Вашем запросе заголовка Content-Type: application/json; charset=utf-8, который говорит серверу о том, что переданные в POST данные являются закодированной строкой JSON и имеют кодировку UTF-8. Это так же может быть понятно из текста ошибки, перевод которой может означать, что сервер CDEK не смог распознать тип передаваемых данных.

В моей практике было что такая ошибка сопровождалась HTML выводом информации с стороны сервера, хотя на выходе предполагается JSON, не смотря на то что видимо данный момент уже поправили и теперь запросы к URL сервера CDEK из примера выше всегда возвращают JSON, тем не менее ранее эту ситуацию можно было поправить, если дополнительно было передать заголовок Accept: application/json, который означает что клиент ожидает от сервера именно JSON закодированную строку и она бы возвращалась сервером CDEK даже при отсутствии заголовка Content-Type. То-есть ещё раз повторю в чём же отличие заголовка Content-Type от Accept: первый заголовок показывает тип содержимого который клиент направляет серверу(если разумеется этот заголовок передаёт именно клиент, а не сервер, в противном случаи заголовок бы обозначал тип контента который вернул сервер для клиента), второй заголовок означает формат данных, с которыми умеет работать клиент и соответственно данные именно в этом формате клиент ожидает получить от сервера.

На скринсшоте ниже приведён пример как выглядит описанная ошибка в браузере, если в коде из листинга выше не передать заголовок Content-Type.

Ошибка Unsupported Media Type с статусом 415 в ответе полученном по api от серера CDEK

Комментарии

Если у Вас возникли вопросы, Вы можете задать их в форме ниже. В частности если Ваш вопрос по Bitrix и что то не получается - можно спросить. Ваш e-mail не публикуется, при этом я отвечу на него если будет что то по теме. Писать необходимо для людей - избегайте сленга, пишите орфографически правильно.

Имя:
E-mail:
Текст комментария:

Вы так же можете прочитать следующие статьи: