我正在从我的Python代码中调用一个Web服务:
response = subprocess.call(['curl', '-k', '-i', '-H' , 'content-type: application/soap+xml' ,'-d', etree.tostring(tree), '-v' ,'https://world-service-dev.intra.aexp.com:4414/worldservice/CLIC/CaseManagementService/V1'])
服务返回一个soap消息,我该如何解析该soap消息并找出它是失败还是成功?我尝试使用以下方法,但结果错误:
subprocess.check_output("curl -k --data "+etree.tostring(tree)+"@SampleRequest.xml -v https://world-service-dev.intra.aexp.com:4414/worldservice/CLIC/CaseManagementService/V1",stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
check_output
,但确保第一个参数是列表,就像对于call
一样。仅提供字符串可能会导致异常结果。 - Kevincurl
来进行HTTP POST请求,例如out = urllib2.urlopen(url, data, headers={'content-type': '...'}).read()
。Python中有SOAP客户端,例如suds
,但我将尝试发送/接收裸xml(以解决SOAP堆栈之间的各种不兼容性)- 您可以使用xml.etree.cElementTree
来解析它。 - jfs