【问题标题】:Python Zeep is throwing unkown fault for soap requestPython Zeep 为肥皂请求引发未知错误
【发布时间】:2020-11-09 03:39:27
【问题描述】:

我是使用框架 zeep 的新手。我正在尝试发送 SOAP 请求。但我得到以下不正确的数据。我需要得到 xml 或 csv 格式的响应。

通过 wsdl,我可以使用 SoapUI 工具获取正确的输出。

from requests import Session
from zeep import Client
from zeep.transports import Transport
from requests.auth import AuthBase, HTTPBasicAuth
import datetime

wsdl = 'http://XX.XXX.XX.XX:ZZZZ/TL/IM?wsdl'

session = Session()
session.auth = SymantecAuth('user','password', "http://XX.XXX.XX.XXX")
session.verify = False
transport = Transport(session=session)

client = Client(wsdl=wsdl, transport=transport)

request_data = {"platforms": "test", "platid": {"ID": "QI4552"}}

results=client.create_message(client.service, 'RetrieveID', request_data)
print(results)

【问题讨论】:

  • 向我们展示您收到的错误
  • 我没有收到任何错误。我只是得到下面的。 schemas.xmlsoap.org/soap/envelope}0x7fabdc9ea888 处的信封>
  • 它打印results 对象。试试print(results.content)
  • 我试过了。它给出了以下错误。 AttributeError: 'lxml.etree._Element' 对象没有属性 'contents'
  • 这是一种 zeep 方法。 PFB。当您希望 zeep 构建并返回 XML 而不是将其发送到服务器时,您可以使用 Client.create_message() 调用。

标签: python python-3.x soap soapui zeep


【解决方案1】:

由于您正在创建消息,print(results) 只是显示创建的消息对象。

这应该可以在屏幕上打印消息:

from lxml import etree

# Your code follows here

results=client.create_message(client.service, 'RetrieveID', request_data)
# this will print the message to be sent to Soap service.
print(etree.tostring(results, pretty_print=True))

如果您想查看RetrieveID 操作的响应。然后改为执行此操作(前提是此方法绑定在第一个可用绑定上):

response = client.service.RetrieveID(**request_data)
print(response)

如果它不起作用,请告诉我们。

【讨论】:

  • 以上没有给出输出。 IT 只是将输入打印为 xml
  • 这是您要求以 xml 或 csv 格式打印结果的内容。没有?
  • 你想得到RetrieveID方法调用的响应吗?
  • 是的。我需要 xml 或 csv 格式的响应
  • 如果有效,请将答案标记为已接受,否则请告诉我们问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多