Я использую Eclipse Indigo для создания приложения Android для вызова веб-сервиса. Это уже работает над проектом Java, но я знаю, что это совсем другое дело.Как бороться с WSDL complexType при разработке приложений для Android?
Я знаю, что вы можете использовать библиотеку ksoap2 и вызывать WebService так:
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("something","Somevalue");
Но я не знаю, как вызвать веб-сервис, когда ваш WSDL имеет ComplexType, как следующее:
<?xml version='1.0' encoding='UTF-8'?>
<definitions name='Gator' targetNamespace='http://home.com/gatorws/ws/Gator/' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://home.com/gatorws/ws/Gator/' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
<types>
<xs:schema targetNamespace='http://home.com/gatorws/ws/Gator/' version='1.0' xmlns:tns='http://home.com/gatorws/ws/Gator/' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
<xs:element name='Gator'>
<xs:complexType>
<xs:sequence>
<xs:element name='idBus' type='tns:IdBusCT'/>
<xs:element name='infoGPS' type='tns:InfoGPSCT'/>
<xs:element name='infoBus' type='tns:InfoBusCT'/>
<xs:element name='infoMore' type='tns:InfoMoreCT'/>
<xs:element maxOccurs='unbounded' minOccurs='0' name='msjcs' nillable='true' type='tns:Mesaje'/>
<xs:element name='msjOPT' type='tns:MsjCor'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='GatorFault'>
<xs:complexType>
<xs:sequence>
<xs:element name='result' type='xs:int'/>
<xs:element name='msj' type='xs:string'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name='GatorResponse'>
<xs:complexType>
<xs:sequence>
<xs:element name='result' type='tns:Result'/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name='IdBusCT'>
<xs:sequence>
<xs:element name='idOp' type='xs:int'/>
<xs:element name='codBus' nillable='true' type='xs:string'/>
<xs:element name='codEqu' nillable='true' type='xs:string'/>
<xs:element name='codType' type='xs:int'/>
</xs:sequence>
</xs:complexType>
<xs:complexType name='InfoGPSCT'>
<xs:sequence>
<xs:element name='lat' type='xs:double'/>
<xs:element name='lng' type='xs:double'/>
<xs:element name='date' type='xs:string'/>
<xs:element name='direction' type='xs:int'/>
<xs:element name='valid' type='xs:int'/>
<xs:element name='velocity' type='xs:double'/>
</xs:sequence>
</xs:complexType>
<xs:complexType name='InfoBusCT'>
<xs:sequence>
<xs:element default='1' name='ignition' nillable='true' type='xs:int'/>
<xs:element default='0' name='emergency' nillable='true' type='xs:int'/>
<xs:element default='0' name='idRoute' nillable='true' type='xs:int'/>
</xs:sequence>
</xs:complexType>
<xs:complexType name='MsjCor'>
<xs:sequence>
<xs:element name='last' type='xs:lng'/>
</xs:sequence>
</xs:complexType>
<xs:complexType name='InfoMoreCT'>
<xs:sequence>
<xs:element default='' name='CODDriver' nillable='true' type='xs:string'/>
</xs:sequence>
</xs:complexType>
<xs:complexType name='Result'>
<xs:sequence>
<xs:element name='result' type='xs:int'/>
<xs:element maxOccurs='unbounded' minOccurs='0' name='msjOPT' nillable='true' type='tns:Mesaje'/>
<xs:element name='msjcs' nillable='true' type='tns:MsjCor'/>
</xs:sequence>
</xs:complexType>
<xs:complexType name='Mesaje'>
<xs:sequence>
<xs:element name='type' type='xs:int'/>
<xs:element name='text' type='xs:string'/>
<xs:element name='date' type='xs:string'/>
<xs:element name='corr' type='xs:int'/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</types>
<message name='Gator_Gator'>
<part element='tns:Gator' name='Gator'></part>
</message>
<message name='Gator_GatorResponse'>
<part element='tns:GatorResponse' name='GatorResponse'></part>
</message>
<message name='GatorFault'>
<part element='tns:GatorFault' name='GatorFault'></part>
</message>
<portType name='Gator'>
<operation name='Gator' parameterOrder='Gator'>
<input message='tns:Gator_Gator'></input>
<output message='tns:Gator_GatorResponse'></output>
<fault message='tns:GatorFault' name='GatorFault'></fault>
</operation>
</portType>
<binding name='GatorBinding' type='tns:Gator'>
<soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
<operation name='Gator'>
<soap:operation soapAction='http://home.com/gatorws/ws/Gator/Gator'/>
<input>
<soap:body use='literal'/>
</input>
<output>
<soap:body use='literal'/>
</output>
<fault name='GatorFault'>
<soap:fault name='GatorFault' use='literal'/>
</fault>
</operation>
</binding>
<service name='Gator'>
<port binding='tns:GatorBinding' name='GatorImplPort'>
<soap:address location='https://10.0.2.2:8080/gatoryws/Gator?wsdl'/>
</port>
</service>
</definitions>
Я просто могу получить ответ об ошибке с веб-службы.
Я пробовал http://www.wsdl2code.com, но это для .NET webservices.
Я также пробовал http://easywsdl.com/, но я не понимаю, как это работает в моем случае.
Есть ли другой инструмент, который я мог бы использовать? Должен ли я перейти на Android Studio?
Если вам интересно, если Android-студия поможет ваш веб-запрос полностью успешно, вы должны пойти читать на протокол, который вы пытаетесь использовать. http://www.w3schools.com/xml/xml_soap.asp – JakeWilson801