0
我已经使用WSDL创建了一个SOAP API,并且需要将文件的字节从客户端传输到API的服务器。我在WSDL中使用unsignedBinary[]
数组类型来描述要传递的数据。 WSDL描述如下:使用带有base64编码的unsignedByte
<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>
我想发送原始字节数据,这是给出错误。 现在我正在做一个base64编码,同时使用soap API调用发送二进制数据。 如果我使用PHP客户端发送数据,它工作正常,但当我使用Delphi应用程序发送数据时,它不工作。
你认为二进制数据转换为Base64是使Delphi应用程序不允许发送数据? unsignedByes
不允许传输到Base 64?有没有人知道这个细节?
,如果你发布你的工作PHP代码和你的破Delphi代码这样的人能指出你的差异这会更有用。 – 2012-07-13 18:18:52
你需要使用unsignedByte吗?就我个人而言,我通常只是将base64编码数据作为普通字符串值发送到SOAP消息中,在服务器端将其提取出来,并将其解码回原来的二进制值。我不知道这在PHP中如何工作,但在Delphi/Java环境中它确实可以正常工作。 – Elling 2012-07-13 22:57:16