如何在Odoo 15中使用Python请求发布XML ElementTree

发布于 2025-02-06 22:36:41 字数 2046 浏览 0 评论 0原文

美好的一天,我正在尝试发布与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)

Good day, I am trying to post xml file that i have generated with ElementTree, when i try to post it i get error below. Please help.

{"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"}}}}

I Have visted this link but no help, How do I send XML ElementTree with Python Requests

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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鱼窥荷 2025-02-13 22:36:42

我建议使用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)

I recommend to use use zeep. Much less manual processing.

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)

and also to see the generated xml

nodes = client.create_message(client.service, "YourServiceFunction", ClaimBatch=request)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文