我正在使用 Python suds 来使用 SOAP 服务,这些调用背后的逻辑是用 Java 编写的。似乎其中一个参数需要传递一个 DataHandler 对象。有什么方法可以在 Python 中创建一个 DataHandler Java 对象(即通过使用库),或者在 Python 中是否有一个等效的 DataHandler 类?
一些背景:
在我一直使用的 WSDL 中,定义输入状态类型的特定行:
<xs:element name="filedata" xmime:expectedContentTypes="application/octet-stream" type="xs:base64Binary" minOccurs="0"/>
我认为我需要做的是遵循这个要求,所以我尝试创建一个二进制 base64 对象,如下所示:
openedfile = open(sourcepath, 'r')
fileData = base64.b64encode(openedfile.read())
但是当我通过 suds 调用该方法时,我收到此错误:
suds.WebFault: Server raised fault: 'javax.activation.DataHandler cannot be cast to org.jvnet.staxex.StreamingDataHandler'
因为我的输入不是 DataHandler(特别是 StreamingDataHandler)对象。