Python POST XML未执行

0 投票
2 回答
2286 浏览
提问于 2025-04-15 15:19

请求头发送得很好,但相关的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 个回答

0

把“urllib.quote()”这个调用去掉。正是这个调用生成了以“%3C%3Fxml”开头的字符串。如果你想发送XML数据,就直接把那个XML字符串作为数据发送,同时加上ataylor提到的Content-Type。(不过在大多数情况下,这个内容类型的设置并不会有什么影响。)

2

你有没有添加内容类型的头信息?为了告诉服务器你的请求是XML格式的,在发送请求之前加上下面这段代码:

request.add_header('Content-Type', 'text/xml')

撰写回答