Headers发布很好,但关联的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内容。
任何想法都会有所帮助。
答案 0 :(得分:2)
您是否正在添加内容类型标头?要告诉服务器您的请求是XML,请在发送请求之前添加以下内容:
request.add_header('Content-Type', 'text/xml')
答案 1 :(得分:0)
取出“urllib.quote()”电话。这就是创建以“%3C%3Fxml”开头的字符串的原因。如果你想要POST XML,那么只需将该XML字符串作为数据发送,以及ataylor提到的Content-Type。 (但在大多数情况下,这没有什么区别。)