您如何建议我将xml数据发布到django中的网址。
例如,在我的views.py中调用视图时,我正在尝试对网址发帖,然后返回xml响应内容。
到目前为止我所拥有的:
import xml
URL ="http://something.com"
def process(request):
response = None
if request.method=="POST":
xml_data = """
<?xml version='1.0' encoding='UTF-8'?>
<something><retrieve_user>Tammy</retrieve_user></something>
"""
headers = {
"Host": "myhost",
"Content-Type": "text/xml; charset=UTF-8",
"Content-Length": len(xml_data)
}
#make response variable equal to process to post xml_data and headers to URL
response = ??
return response
在此之后,我如何获得响应内容的值。例如,如果响应内容返回了这个:
<response_begin>
<array>
<info>
<name>Name Something</name>
<email>Email Something</email>
</info>
<info>...</info>
</array>
</response_begin>
如何检索值&#34; Name Something&#34;和&#34;电子邮件东西&#34;?提前谢谢。
答案 0 :(得分:1)
我认为django部分在这种情况下是红鲱鱼。查看python内置的httplib模块。它将允许您发出POST请求。页面底部有一些示例。
https://docs.python.org/2/library/httplib.html
您希望将内容类型和接受标题更改为&#34; text / xml&#34;或&#34; application / xml&#34;。
答案 1 :(得分:1)
我找到了一篇帮助我使用httplib解决发布问题的文章。
https://gist.github.com/hoest/3655337
import httplib
import xml.dom.minidom
HOST = "www.domain.nl"
API_URL = "/api/url"
def do_request(xml_location):
"""HTTP XML Post request"""
request = open(xml_location, "r").read()
webservice = httplib.HTTP(HOST)
webservice.putrequest("POST", API_URL)
webservice.putheader("Host", HOST)
webservice.putheader("User-Agent", "Python post")
webservice.putheader("Content-type", "text/xml; charset=\"UTF-8\"")
webservice.putheader("Content-length", "%d" % len(request))
webservice.endheaders()
webservice.send(request)
statuscode, statusmessage, header = webservice.getreply()
result = webservice.getfile().read()
resultxml = xml.dom.minidom.parseString(result)
print statuscode, statusmessage, header
print resultxml.toprettyxml()