我使用的Android项目ksoap2,Android的上传文件。它不工作。发送复杂对象,附件的ksoap2-的Android
首先,我的WSDL看起来是这样的:
<xsd:element name="Op1RequestType">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="date" type="xsd:dateTime"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="imgFile"
type="tns:Attachment"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
和 “TNS:附件” 的定义是这样的:
<xsd:complexType name="Attachment">
<xsd:sequence>
<xsd:element name="file" type="xsd:base64Binary"/>
<xsd:element name="filename" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
我创建一个SoapSerializationEnvelope
并在属性加名称为date
,值为当前日期的字符串表示形式。这个成功的作品,即使我不添加文件(注意minOccurs="0"
)。然而,当我尝试添加一个文件,它可怕的失败:
首先,我做Attachment
型的代表通过创建一个SoapObject
其具有的属性分别file
和filename
,类型byte[].class
和String.class
。
然后我将这些对象添加到一个通用向量(以表示imgFile
项目的多样性)并将Vector作为属性附加到信封。这成功地创建了一个SOAP消息,从服务器的响应会引发异常(因为它是一个错误消息,而不是一个适当的反应,因为不知我的输入不好......):
WARN/System.err(438): SoapFault - faultcode: 'soapenv:Server'
faultstring:'org.apache.axis2.databinding.ADBException: Unexpected subelement imgFile'
faultactor: 'null' detail: [email protected]
好,所以我做错了什么?有没有办法看到我发送的请求SOAP信封?
我敢肯定,我的web服务工作正常,顺便说一句。我已为它的客户提供其他工具:wsdl2objc为iPhone,为WSDL2Java的非Android的Java。 – bdares 2011-06-09 09:17:17