问题标签 [zeep]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3316 浏览

python - python zeep,我怎样才能更容易地找到方法/属性所属的绑定?

我尝试使用 python-zeep 包来消费一些肥皂服务(ID3 Global

这似乎是可行的,感谢最近添加的功能(WSSE 身份验证和使用多个绑定的可能性)

现在我尝试循环中的每个绑定以找到正确的绑定,例如:

有没有更好的办法?

谢谢

0 投票
1 回答
3051 浏览

python - 如何在 Python zeep 中指定 SOAP 服务器 URL

我正在使用 Python zeep 库,但文档似乎有点薄。我希望能够指定 SOAP 服务器的 URL,但目前我只能通过破解 WSDL 文件来做到这一点。

0 投票
2 回答
3681 浏览

python - 使用 zeep (python) 在 SOAP 请求消息的 http 标头中设置用户名和密码?

如何使用 python 的 zeep 在 SOAP 请求消息的 http 标头中设置用户名和密码?我相信这就是为什么我收到连接被拒绝错误但无法弄清楚可以在哪里设置 http 标头详细信息的原因。我什至尝试在 wsdl 文件上运行 python -mzeep (而不是创建客户端并调用 Web 服务方法),但它仍然无法连接。

0 投票
1 回答
9672 浏览

python - Python Zeep 客户端请求在 xml 异常中引发错误

当我运行以下代码时,我不断收到以下错误:here is an error in XML document (113, 25). ---> The string '' is not a valid Boolean value.我不明白为什么会这样。是文档,根据它不需要布尔字段。

任何帮助将不胜感激!

0 投票
1 回答
15391 浏览

python - 如何在 Python 中通过 zeep 使用 WSDL 中的复杂类型

我有一个包含复杂类型的 WSDL,如下所示:

我已决定将zeep用于肥皂客户端,并希望将该类型用作 WSDL 中引用的其他方法之一的参数。我似乎无法弄清楚如何使用这种类型。当我查看有关如何使用 WSDL 中引用的某些数据结构的文档client.get_type()时,它说要使用该方法,因此我执行了以下操作:

这给出了一个错误TypeError: argument of type 'string_array' is not iterable。我还尝试了许多变体,并尝试使用这样的字典:

这给出了错误

如果有人知道如何通过 zeep 使用 WSDL 中的上述类型,我将不胜感激。谢谢。

0 投票
2 回答
6407 浏览

python - 带有 Zeep 的 Python SOAP 客户端 - 导入命名空间

一点背景:在解决了身份验证问题后,打开了这个问题。我更喜欢打开一个新的,以避免用与原始问题无关的评论污染以前的评论,并给予它适当的可见性。

我正在开发一个与服务器在同一 Intranet 中运行的 SOAP 客户端,但无法访问 Internet。

问题:WSDL 包含对位于 Intranet 外部的外部资源的导入('import namespace="schemas.xmlsoap.org/soap/encoding/"'),因此 Zeep Client 实例化失败并显示:

问题:是否有可能(并且有意义)在不访问外部资源的情况下创建 Zeep 客户端?

作为一个额外的细节,另一个用 Java 编写的基于 XML rpc ServiceFactory 的客户端似乎对这种问题更有弹性,即使没有可用的互联网连接,该服务也会被创建(并工作)。真的需要从 xmlsoap.org 导入命名空间吗?

在@mvt回答后编辑:

因此,我选择了建议的解决方案,它允许我同时控制对外部资源的访问(阅读:禁止访问不同于托管端点的服务器)。

0 投票
1 回答
1012 浏览

web-services - 如何使用 Zeep 从 SOAP 请求中删除多余的标头

在尝试使用 Zeep 从 Netsuite Web 服务(WSDL https://webservices.sandbox.netsuite.com/wsdl/v2016_1_0/netsuite.wsdl)创建产品搜索的 SOAP 请求时,我使用以下代码:

但是 zeep 生成的 XML 格式如下:

请注意,生成的标头包含我没有设置的参数,例如 tokenPassport 和 partnerInfo。添加的 tokenPassport 与护照一起导致 Netsuite 端点抛出不明确的身份验证错误。

有人可以指出如何从生成的 XML SOAP 标头中删除 tokenPassport 吗?

0 投票
0 回答
2058 浏览

python - 无法解析 XML SOAP 响应 Python Zeep

我从 SOAP 服务收到此响应,但无法解析响应。我想读取 gtin 的值。

以下是 Eclipse 中 pydev 调试器中响应的样子:

我尝试使用它来解析响应,但出现以下错误:

错误:

0 投票
1 回答
3264 浏览

python - Python Zeep SOAP 客户端模块 - 无法为元素设置属性

我对 Python 有点生疏,但我需要使用 zeep 客户端设置 SOAP 调用。我通过仅传入一个字典对象成功地调用了几个方法,但是我没有运气设置这一部分,我不确定是否可以使用这种技术。

这是我遇到问题的信封部分:

嵌入在里面:

我尝试像这样传递这个参数:

在信封内,但似乎它不起作用。由于 SOAP 方法没有很好的验证,它确实创建了两个setupParameter类型的项目,但它们都缺少keyvalue值。

请为我阐明这一点。

编辑1

这是我试图复制的 SoapUI(请求的一部分)的输出:

编辑2

因此,我向 zeep 客户端添加了一个插件(如他们的文档中所述),它打印出 SOAP 请求和响应,这是请求:

从这个输入字典创建的(通过像这样传入 - client.service.serviceName(inputDict)):

我想要的是(只是有问题的部分):

0 投票
2 回答
1001 浏览

soap - 哪个 python soap 客户端支持 spyne 二进制类型?

我想调用一个以 spyne 二进制类型作为参数的 Web 服务方法。但我找不到任何支持它的 python 肥皂客户端。

为了调试我的问题,我做了一个简单的 Web 服务方法,应该打印一个文件:

如您所见,我尝试了 3 种 spyne 二进制类型。对于调试,我也尝试使用 Unicode,并以 base64 传递文件内容,在这种情况下没有问题。因此,Web 服务是可操作的。

服务器端是一个 Django 应用程序和一个 spyne 应用程序。我的问题在客户端。使用suds,得到的错误非常模糊,根据论坛没有解决方案。

我使用 python 2.7 和 3.3尝试了https://wiki.python.org/moin/WebServices#SOAP上描述的所有 SOAP 客户端 。在构建请求、序列化 spyne 二进制对象时,它们都失败了。

我的最后一次尝试是使用 zeep。我用 wsdl 本地 url 实例化 zeep 客户端。抱歉,wsdl 不公开。

我用一个空的 ByteArray 调用这个方法:

捕获的异常是:


有谁知道 zeep 是否有解决方案?
也许有一个专门的 zeep 插件?

还是有其他解决方案?
也许在 C/C++ 中,编译为 python 包?

埃里克

==================================================== ==========
== 解决方案

由于我在这个问题上浪费了很多时间,这就是我的解决方案。

最后,我还需要文件名,而不仅仅是文件数据。spyne.model.binary.File 类型本来是完美的,但它不能序列化为 SOAP 格式。

感谢与 Burak 的讨论,最终的解决方案是创建一个自定义的 ComplexType,例如:

在客户端使用 suds 时,将 ByteArray 字段直接替换为 base64 编码的数据:

在服务器端, f.data 将直接包含解码的数据。