Как я могу отправить HTTP-запрос PUT без PHP?
Я использовал PHP кучу, но теперь я пишу для смартфона. (Использование Swift, Java и C#). (Если спросят, я могу показать быстрый код, который я использую.)
GET прост, вы также можете просто указать URL-адрес в веб-браузере, чтобы получить ответ. У меня есть несколько способов получить клиентов, адреса, продукты и т. д., и они хорошо работают. (У меня также есть много объектных моделей, таких как структура таблицы базы данных, в которых хранятся данные.). (Поскольку JSON гораздо проще декодировать/кодировать, я применяю "&output_format=JSON". Если бы я только мог также PUT/POST JSON...)
ПОЧТА тоже работает! Я могу ПОЛУЧИТЬ пустую схему, вставить новые данные (используя обычный текст) и отправить (POST) XML на URL-адрес. Он делает свое дело и отправляет ответ, содержащий вставленную запись с деталями, завернутыми в CDATA. (т.е. <abc><![CDATA[input_data]]></abc>
, где я хочу вставить input_data в abc) Ответ включает назначенный идентификатор. Это прекрасно работает!
Однако, когда дело доходит до запроса PUT (и, возможно, DELETE в будущем...), я продолжаю получать ошибки.
Используя Fiddler, я могу просмотреть точную транзакцию (запрос и ответ).
Я также использовал клиентское приложение REST (от WizTools.org), и его ответ был исключен.
Но с PUT - чтобы обновить детали, я сначала ПОЛУЧИЛ изменение записи (по идентификатору) по мере необходимости, а затем ВЕРНУЛ XML обратно на тот же URL-адрес. Так что это похоже на выше, но это не удается:
(Вместо этого было бы проще отправить JSON.)
PUT http://example.com/api/customers?ws_key=ABC..XYZ
Content-Type: application/xml; charset=utf-8
Accept: */*
...
<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<customer>
<id>
...
</customer>
</prestashop>
Он отвечает:
HTTP/1.1 500 Internal Server Error
Content-Type: text/xml; charset=utf-8
...
<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<errors>
<error>
<code><![CDATA[127]]></code>
<message><![CDATA[XML error : String could not be parsed as XML
XML length : 0
Original XML : ]]></message>
</error>
</errors>
</prestashop>
Что мне нужно для отправки XML с помощью PUT?
Чем PUT отличается от POST, какие дополнительные шаги необходимы?