簡體   English   中英

如何使用 zeep 發送 xml 請求?

[英]How to send a xml request with zeep?

我正在努力理解如何使用 python 請求數據。 我用zeep在代碼中實現了wsdl文件。 我認為問題在於正文請求,即 xml 格式。 歡迎任何幫助!

from requests import Session
from zeep import Client, Settings
from zeep.transports import Transport

session = Session()
session.verify = ('my_pem_file.pem')
transport = Transport(session=session)
settings = Settings(strict=False, xml_huge_tree=True)
client = Client("my_wdsl_file.xml", transport=transport, settings=settings)


anfrage = '''<item>
               <NAME>VAR_NAME_1</NAME>
               <VALUE>/SIE/PD_VASHU004</VALUE>
            </item>'''

print(client.service.RRW3_GET_QUERY_VIEW_DATA("/SIE/PD_PFI21","",anfrage,"EPIQ_FINANCIALS"))

如果我運行終端命令python -wzeep "my_wsdl_file.xml我得到以下方法定義:

ns0:RRW3_GET_QUERY_VIEW_DATA(I_INFOPROVIDER: ns0:char30, I_QUERY: ns0:char30, I_T_PARAMETER: ns0:RRXW3TQUERY, I_VIEW_ID: ns0:char30)

所以我放置了char30提供者,空的char30查詢,但是我不知道如何對xml body請求進行intergrade以及具體格式是什么。

如果我像這樣運行代碼片段,我會得到以下異常樹。

Traceback (most recent call last):
  File "C:\Users\z0044r2t\Desktop\codeSAP.py", line 59, in <module>
    print(client.service.RRW3_GET_QUERY_VIEW_DATA("/SIE/PD_PFI21","",anfrage,"EPIQ_FINANCIALS"))
  File "C:\Users\z0044r2t\AppData\Local\Programs\Python\Python38-32\lib\site-packages\zeep\proxy.py", line 40, in __call__
    return self._proxy._binding.send(
  File "C:\Users\z0044r2t\AppData\Local\Programs\Python\Python38-32\lib\site-packages\zeep\wsdl\bindings\soap.py", line 118, in send
    envelope, http_headers = self._create(
  File "C:\Users\z0044r2t\AppData\Local\Programs\Python\Python38-32\lib\site-packages\zeep\wsdl\bindings\soap.py", line 68, in _create
    serialized = operation_obj.create(*args, **kwargs)
  File "C:\Users\z0044r2t\AppData\Local\Programs\Python\Python38-32\lib\site-packages\zeep\wsdl\definitions.py", line 215, in create
    return self.input.serialize(*args, **kwargs)
  File "C:\Users\z0044r2t\AppData\Local\Programs\Python\Python38-32\lib\site-packages\zeep\wsdl\messages\soap.py", line 74, in serialize
    self.body.render(body, body_value)
  File "C:\Users\z0044r2t\AppData\Local\Programs\Python\Python38-32\lib\site-packages\zeep\xsd\elements\element.py", line 231, in render
    self._render_value_item(parent, value, render_path)
  File "C:\Users\z0044r2t\AppData\Local\Programs\Python\Python38-32\lib\site-packages\zeep\xsd\elements\element.py", line 255, in _render_value_item
    return self.type.render(node, value, None, render_path)
  File "C:\Users\z0044r2t\AppData\Local\Programs\Python\Python38-32\lib\site-packages\zeep\xsd\types\complex.py", line 279, in render
    element.render(parent, element_value, child_path)
  File "C:\Users\z0044r2t\AppData\Local\Programs\Python\Python38-32\lib\site-packages\zeep\xsd\elements\indicators.py", line 242, in render
    element.render(parent, element_value, child_path)
  File "C:\Users\z0044r2t\AppData\Local\Programs\Python\Python38-32\lib\site-packages\zeep\xsd\elements\element.py", line 231, in render
    self._render_value_item(parent, value, render_path)
  File "C:\Users\z0044r2t\AppData\Local\Programs\Python\Python38-32\lib\site-packages\zeep\xsd\elements\element.py", line 255, in _render_value_item
    return self.type.render(node, value, None, render_path)
  File "C:\Users\z0044r2t\AppData\Local\Programs\Python\Python38-32\lib\site-packages\zeep\xsd\types\complex.py", line 279, in render
    element.render(parent, element_value, child_path)
  File "C:\Users\z0044r2t\AppData\Local\Programs\Python\Python38-32\lib\site-packages\zeep\xsd\elements\indicators.py", line 229, in render
    element_value = value[name]
TypeError: string indices must be integers

你能分享運行python -mzeep的其余輸出嗎? ns0:RRXW3TQUERY類型的定義是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM