Я использую ksoap2-Android в проекте 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>
IСоздаю SoapSerializationEnvelope
и добавляю в свойство имя date
и значение в виде строкового представления текущей даты.Это работает успешно, даже если я не добавляю файл (обратите внимание на minOccurs="0"
).Однако, когда я пытаюсь добавить файл, он ужасно терпит неудачу:
Во-первых, я делаю представителя типа Attachment
, создавая SoapObject
, который имеет свойства file
и filename
,типов byte[].class
и String.class
соответственно.
Затем я добавляю эти объекты к универсальному вектору (для представления кратности элемента imgFile
) и прикрепляю вектор как свойство к конверту.Это создает сообщение 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 запроса, который я отправляю?