【问题标题】:Easiest way to send XML via HTTP requests in Python?在 Python 中通过 HTTP 请求发送 XML 的最简单方法是什么?
【发布时间】:2012-05-22 18:33:50
【问题描述】:

是否有首选的 python 模块可以帮助我通过 HTTP 请求发送 XML 并能够解析返回的 XML?

【问题讨论】:

  • 它是 SOAP 消息还是只是一些 XML 消息?对于 SOAP 与 python 的集成,请参阅suds
  • 解析 XML 相关:stackoverflow.com/q/1912434/208339。我也喜欢 ElementTree。
  • XML 将采用简单的格式,例如 0 或多个嵌套。

标签: python xml httprequest


【解决方案1】:

一种方法是使用urllib2:

r = urllib2.Request("http://example.com", data="<xml>spam</xml>",
                     headers={'Content-Type': 'application/xml'})
u = urllib2.urlopen(r)
response = u.read()

请注意,您必须设置内容类型标头,否则请求将发送application/x-www-form-urlencoded

如果这对您来说太复杂了,那么您也可以使用 requests 库。

对于解析响应,lxml 是一个很棒的库,但 elementtree 也可以。

【讨论】:

  • 我强烈推荐requests 在所有情况下。
  • 我不断收到由于状态为空而导致的错误 badstatusline。有什么方法可以忽略这一点或获取响应的 XML?
  • 这意味着您的服务器可能没有返回有效的 http 状态。
  • 为什么会有问题?除了httplib还有其他模块可以发送http请求吗?
  • 是的,正如我所写,您应该尝试requests 库,它可能可以更好地处理不良状态。但如果您可以控制服务器,则应检查它是否返回有效状态或为什么不返回。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
相关资源
最近更新 更多