2016-11-17 3 views
0

Я интегрировал свой сайт с сторонним API, и по какой-то причине, когда я отправляю свой XML запросите файл, все пробелы, которые у меня есть в запросе, возвращаются без пробелов. Например, если у меня есть «123 Main Street», он будет возвращен как «123MainStreet».«Ошибка анализа XML: не хорошо сформирована» в браузере из-за знака «плюс» (+) », но нужно его в запросе API

Сторонняя группа поддержки API говорит, что я так кодирую XML-запрос при его отправке; который вызывает удаление пробелов, но я использую тот же метод с другими API-интерфейсами, и у меня нет этой проблемы.

Затем они сообщают мне, что я могу использовать знак «плюс (+)» в моем XML-запросе, чтобы решить эту проблему, как в следующем примере; который заканчивается, но затем я больше не могу просматривать свой XML-запрос в своем браузере.

<STREET1>123+Main+Street</STREET1> 

Затем я получаю "Ошибка синтаксического анализа XML : Не хорошо сформированную" сообщение. Тем не менее, я все еще могу видеть XML-запрос, но теперь мне нужно «просмотреть источник страницы» в своем браузере, чтобы увидеть его, пока раньше, когда я не добавил «плюс знак (+)« он появится отлично в моем браузере.

Кто-нибудь знает, как я могу вернуть свой XML-запрос, чтобы снова показать его с помощью знака «плюс» (+) «все еще в файле запроса?

Или есть еще один «метод кодирования». Я должен попробовать таким образом, чтобы пробелы не удалялись, когда я отправлял свой XML-файл запроса в API?

Спасибо!

+0

Поскольку ни одно из того, что вы описываете, не звучит, как обычно, когда вы отправляете XML в API и из него, я думаю, вы собираетесь предоставить нам дополнительную информацию. Можете ли вы рассказать нам, что такое сторонний API? Как вы отправляете на него свои запросы (HTTP-запрос и т. Д.)? – JLRishe

ответ

0

Мое предположение заключается в том, что вы передаете XML как параметр в URI, отправленный на веб-сервер, возможно, даже по обычному запросу HTTP GET. Это очень плохой дизайн API (запросы GET никогда не должны использоваться для запросов, которые меняют состояние на сервере), но они так и спроектировали его, тогда вам, вероятно, придется жить с ним.

Кодирование пробела как знак плюса будет работать в части запроса URI (см., Например, When to encode space to plus (+) or %20?). Но XML содержит много других специальных символов, которые также должны быть закодированы, поэтому вам действительно нужно более общее решение, а именно процентное кодирование (где пространство становится% 20, «<» становится% 3C) и т. Д. В зависимости от того, на каком языке вы находитесь вы можете найти библиотечную программу, которая сделает это за вас.