Python POST XML не выполнен - PullRequest
0 голосов
/ 23 октября 2009

Заголовки публикуются нормально, но связанный с ними XML представляется только строковыми данными, XML не обрабатывается XML-строка имеет вид:

params = '''<?xml version="1.0" encoding"="UTF-8 "?>
<MainRequest>
<requestEnvelope><errorLanguage>en_US</errorLanguage>
</requestEnvelope></MainRequest>'''

POST имеет форму:

enc_params = urllib.quote(params)
request = urllib2.Request("https://myURL/",enc_params, headers)

Отправка XML имеет вид:

%3C%3Fxml%20version%3D%221.0%22%20encoding%22%3D%22UTF-8%20%22%3F%3E%0A%3CMainReq
uest%3E%0A%3CrequestEnvelope%3E%3CerrorLanguage%3Een_US%3C/errorLanguage%3E%0A%3
C/requestEnvelope%3E

В сообщении об ошибке указывается, что содержимое XML отсутствует.

Любые идеи будут полезны.

Ответы [ 2 ]

2 голосов
/ 23 октября 2009

Вы добавляете заголовок типа контента? Чтобы сообщить серверу, что ваш запрос является XML, добавьте следующее перед отправкой запроса:

request.add_header('Content-Type', 'text/xml')
0 голосов
/ 24 октября 2009

Уберите вызов urllib.quote (). Это то, что создало строку, которая запускает "% 3C% 3Fxml". Если вы хотите POST XML, просто отправьте эту строку XML в качестве данных вместе с Content-Type, упомянутым ataylor. (Но в большинстве случаев это не имеет значения.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...