我在 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:Attachment”的定义如下:
<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
然后我将这些对象添加到通用 Vector(以表示imgFile
项目的多样性)并将 Vector 作为属性附加到信封。这成功创建了一条 SOAP 消息,并且来自服务器的响应引发了异常(因为它是一条错误消息,而不是正确的响应,因为不知何故我的输入不好......):
WARN/System.err(438): SoapFault - faultcode: 'soapenv:Server'
faultstring:'org.apache.axis2.databinding.ADBException: Unexpected subelement imgFile'
faultactor: 'null' detail: org.kxml2.kdom.Node@4676b8a0
好吧,那我做错了什么?有没有办法查看我发送的请求 SOAP 信封?