如何解决您可以使用 Async Zeep 在 Basic Auth 后面调用 SOAP 服务吗?
我正在尝试将 Zeep 库的先前工作同步使用转换为此的异步版本。在向 WSDL 发出请求时,传输将始终返回 404。
以下是同步实现并按预期工作。
session = Session()
session.auth = HTTPBasicAuth(username,password)
transport = Transport(session=session)
return Client(config_url,transport=transport)
但是,当我将其更改为异步实现(使用 httpx)时,它将返回传输错误。此传输错误中的唯一消息是 401
。
http_client = httpx.Client()
http_client.auth = (username,password)
http_client.verify = True
transport = AsyncTransport(session=http_client)
return AsyncClient(config_url,transport=transport)
我是否正确使用了异步 Zeep?根据 docs 它应该像这样工作
解决方法
好吧,显然界面不完全一样。要使用基本身份验证为 zeep 实例化 AsyncClient,您需要创建一个同步和异步客户端。
这是因为 zeep 以同步方式获取 WSDL,然后异步执行请求。这意味着 wsdl_client
必须是同步的,而 client
必须是异步的!
async_client = httpx.AsyncClient(
auth=(username,password),verify=True
)
wsdl_client = httpx.Client(
auth=(username,verify=True
)
transport = AsyncTransport(client=async_client,wsdl_client=wsdl_client)
return AsyncClient(config_url,transport=transport)
有了这个,我们现在可以等待文档中描述的所有服务请求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。