Как я могу поставить запись через веб-сервис Prestashop (остальные API) - PullRequest
0 голосов
/ 28 июня 2018

Как я могу отправить запрос PUT HTTP, без PHP?

Я использовал PHP кучу, но сейчас я пишу для смартфона. (Использование Swift, Java и C #). (Если будет предложено, я могу показать используемый мной быстрый код.)

GET прост, вы также можете просто поместить URL в веб-браузер, чтобы получить ответ. У меня есть несколько способов получить клиентов, адреса, продукты и т. Д., И они работают хорошо. (У меня также есть много объектных моделей - таких как структура таблицы базы данных - которые хранят данные.). (Поскольку JSON намного проще декодировать / кодировать, я применяю "& output_format = JSON". Если бы я только мог также PUT / POST JSON ...)

POST тоже работает! Я могу получить пустую схему, вставить новые данные (используя обычный текст) и отправить (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, какие дополнительные шаги необходимы?

...