我使用WSDL创建了一个SOAP API,我需要将文件的字节从客户端传输到API的服务器。我在WSDL中使用unsignedBinary[]
数组类型来描述要传递的数据。 WSDL描述如下:
<complexType name="TByteArray">
<complexContent>
<restriction base="soapenc:Array">
<sequence/>
<attribute ref="soapenc:arrayType" n1:arrayType="xs:unsignedByte[]" xmlns:n1="http://schemas.xmlsoap.org/wsdl/"/>
</restriction>
</complexContent>
</complexType>
我正在尝试以原始字节发送数据,这会产生错误。 现在我在使用soap API调用发送二进制数据时进行base64编码。 如果我使用PHP Client发送数据,它可以正常工作,但是当我使用Delphi应用程序发送数据时,它无法正常工作。
您认为将二进制数据转换为base64会使Delphi应用程序不允许发送数据吗?
unsignedByes
不允许转移到Base 64?有谁知道这个细节?
答案 0 :(得分:0)
感谢您的宝贵意见,但我已经解决了这个问题。 我删除了以下代码并在“type:xs:hexbinary”
上传输了二进制文件 <part name="abData" type="xs:hexBinary"/>
它就像魔法一样。 它将二进制文件自动转换为十六进制,并在服务器上接收时,它再次转换为二进制文件...
感谢。