[英]How to post an XML ElementTree with Python Requests in Odoo 15
美好的一天,我正在尝试发布我用 ElementTree 生成的 xml 文件,当我尝试发布它时,我在下面收到错误。 请帮忙。
{"env:Envelope": {"@xmlns:env": "http://schemas.xmlsoap.org/soap/envelope/", "env:Header": null, "env:Body": {"env:Fault": {"@xmlns:env": "http://schemas.xmlsoap.org/soap/envelope/", "faultcode": "env:Server", "faultstring": "Cannot create SOAP envelope from: ClaimBatch"}}}}
我访问过此链接但没有帮助,如何使用 Python 请求发送 XML ElementTree
def batch_file(self):
Transaction = etree.Element("ClaimBatch")
BatchHeader = etree.Element("BatchHeader")
batchDate = etree.SubElement(BatchHeader, "batchDate")
batchDate.text = ''
Transaction.append(BatchHeader)
for claim in self.claim_ids:
Claim = etree.Element("Claim")
transactionType = etree.SubElement(Claim, "transactionType")
transactionType.text = ''
testClaim = etree.SubElement(Claim, "testClaim")
testClaim.text = ''
Lines = etree.Element("Lines")
Line = etree.Element("Line")
lineNo = etree.SubElement(Line, "lineNo")
lineNo.text = '1'
Lines.append(Line)
Claim.append(Lines)
Transaction.append(Claim)
BatchTrailer = etree.Element("BatchTrailer")
numClaims = etree.SubElement(BatchTrailer, "numClaims")
batchTotal = etree.SubElement(BatchTrailer, "batchTotal")
batchTotal.text = ''
Transaction.append(BatchTrailer)
# Generate Batch File
url = 'http://IP_ADDRESS/some_texxt/realTimeClaimWS?wsdl/'
try:
send_xml_data = requests.post(url, data=ET.tostring(Transaction, encoding='utf-8'), verify=False).text
respose = xmltodict.parse(send_xml_data)
set_json = json.dumps(respose)
self.error_msg = set_json
except Exception as e:
self.error_msg = str(e)
我建议使用 zeep。 人工处理少得多。
from zeep import Client
jadajada_api_wsdl_url = "https://....?wsdl"
client = Client(jadajada_api_wsdl_url)
request = {
"BatchHeader":{"batchDate":""}
# jada jada
}
node = client.service.YourServiceFunction(ClaimBatch=request)
并查看生成的 xml
nodes = client.create_message(client.service, "YourServiceFunction", ClaimBatch=request)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.