使用unsignedByte和base64编码

时间:2012-07-13 13:45:44

标签: delphi soap

我使用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?有谁知道这个细节?

1 个答案:

答案 0 :(得分:0)

感谢您的宝贵意见,但我已经解决了这个问题。 我删除了以下代码并在“type:xs:hexbinary”

上传输了二进制文件

<part name="abData" type="xs:hexBinary"/>

它就像魔法一样。 它将二进制文件自动转换为十六进制,并在服务器上接收时,它再次转换为二进制文件...

感谢。