Python POST XML未执行
请求头发送得很好,但相关的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')