【问题标题】:Python POST XML not executedPython POST XML 未执行
【发布时间】:2009-10-24 11:26:18
【问题描述】:

标头发布正常,但关联的 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 内容。

任何想法都会有所帮助。

【问题讨论】:

  • XML “字符串数据”。您可以访问服务器端吗?你能检查日志吗?我还注意到您在encoding"="UTF-8 " 处的处理指令中存在语法错误

标签: python xmlhttprequest


【解决方案1】:

您要添加内容类型标头吗?要告诉服务器您的请求是 XML,请在发送请求之前添加以下内容:

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

【讨论】:

  • 非常感谢,'encoding'、'urllib.quote' 和 'Content-Type' header cmets 的删除让我顺利通过了。我有工作 Python/XML 帖子。
【解决方案2】:

取出“urllib.quote()”调用。这就是创建以“%3C%3Fxml”开头的字符串的原因。如果您想发布 XML,那么只需将该 XML 字符串作为数据发送,以及 ataylor 提到的 Content-Type。 (但在大多数情况下,这并没有什么不同。)

【讨论】:

    猜你喜欢
    • 2013-07-15
    • 1970-01-01
    • 2014-11-26
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多