Je suis nouveau sur android. Je crée une application de calculatrice qui utilise le service Web. Le service Web est SOAP. donc j'inclus un fichier Ksoap2.jar avec des dépendances. Je prends l'entrée du texte d'édition comme dans le type de données double et le passe au service Web. Cet appel de service Web prend également les paramètres comme doublon et ajout de fonction d'appel du serveur qui a fait l'addition et le résultat de retour.Attention: ne peut pas sérialiser 1.0
Mon code de service Web appelant bouton égal android est:
private void onEqualsButtonClick() {
secondNumber = Double.parseDouble(editTextInput.getText().toString());
//secondNumber = Integer.parseInt(editTextInput.getText().toString());
editTextInput.setText("");
if(flag==1){
//Initialize soap request + add parameters
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
//Use this to add parameters
request.addProperty("number1",firstNumber);
request.addProperty("number2",secondNumber);
//Declare the version of the SOAP request
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
try {
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
//this is the actual part that will call the
androidHttpTransport.call(SOAP_ACTION, envelope);
// Get the SoapResult from the envelope body.
SoapObject result = (SoapObject)envelope.bodyIn;
if(result != null){
//Get the first property and change the label text
editTextInput.setText(""+result.getProperty(0).toString());
} else{
Toast.makeText(getApplicationContext(), "No Response",Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
e.printStackTrace();
}
Le wsdl du service Web est:
<definitions
name="Calculate_WebService"
targetNamespace="http://calculatorapplication.ocs.com/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://calculatorapplication.xxx.com/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://calculatorapplication.ocs.com/"
elementFormDefault="qualified" xmlns:tns="http://calculatorapplication.xxx.com/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/">
<element name="getAddition" type="tns:getAddition"/>
<complexType name="getAddition">
<sequence>
<element name="number1" type="double"/>
<element name="number2" type="double"/>
</sequence>
</complexType>
<element name="getAdditionResponse" type="tns:getAdditionResponse"/>
<complexType name="getAdditionResponse">
<sequence>
<element name="return" type="double"/>
</sequence>
</complexType>
</schema>
</types>
<message name="Calculate_WebService_getAddition">
<part name="parameters" element="tns:getAddition"/>
</message>
<message name="Calculate_WebService_getAdditionResponse">
<part name="parameters" element="tns:getAdditionResponse"/>
</message>
<portType name="Calculate_WebService">
<operation name="getAddition">
<input message="tns:Calculate_WebService_getAddition"/>
<output message="tns:Calculate_WebService_getAdditionResponse"/>
</operation>
</portType>
<binding name="Calculate_WebServiceSoapHttp" type="tns:Calculate_WebService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getAddition">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="Calculate_WebService">
<port name="Calculate_WebServiceSoapHttpPort" binding="tns:Calculate_WebServiceSoapHttp">
<soap:address location="http://xxx.xxx.x.xxxx/Calculator_Application_WebServices-Calculator_Application-context-root/Calculate_WebServiceSoapHttpPort"/>
</port>
</service>
Et je reçois d'avertissement avec en sortie est la :
12-27 10:40:22.221: W/System.err(331): java.lang.RuntimeException: Cannot serialize: 1.0
12-27 10:40:22.241: W/System.err(331): at org.ksoap2.serialization.SoapSerializationEnvelope.writeElement(SoapSerializationEnvelope.java:708)
12-27 10:40:22.241: W/System.err(331): at org.ksoap2.serialization.SoapSerializationEnvelope.writeProperty(SoapSerializationEnvelope.java:692)
12-27 10:40:22.241: W/System.err(331): at org.ksoap2.serialization.SoapSerializationEnvelope.writeObjectBody(SoapSerializationEnvelope.java:661)
12-27 10:40:22.241: W/System.err(331): at org.ksoap2.serialization.SoapSerializationEnvelope.writeObjectBody(SoapSerializationEnvelope.java:645)
12-27 10:40:22.241: W/System.err(331): at org.ksoap2.serialization.SoapSerializationEnvelope.writeElement(SoapSerializationEnvelope.java:702)
12-27 10:40:22.241: W/System.err(331): at org.ksoap2.serialization.SoapSerializationEnvelope.writeBody(SoapSerializationEnvelope.java:618)
12-27 10:40:22.241: W/System.err(331): at org.ksoap2.SoapEnvelope.write(SoapEnvelope.java:198)
12-27 10:40:22.241: W/System.err(331): at org.ksoap2.transport.Transport.createRequestData(Transport.java:111)
12-27 10:40:22.241: W/System.err(331): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:119)
12-27 10:40:22.241: W/System.err(331): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:95)
12-27 10:40:22.241: W/System.err(331): at com.ocs.calculatorapplication.Acivity.CalculatorActivity.onEqualsButtonClick(CalculatorActivity.java:189)
12-27 10:40:22.251: W/System.err(331): at com.ocs.calculatorapplication.Acivity.CalculatorActivity.onClick(CalculatorActivity.java:122)
12-27 10:40:22.251: W/System.err(331): at android.view.View.performClick(View.java:2485)
12-27 10:40:22.251: W/System.err(331): at android.view.View$PerformClick.run(View.java:9080)
12-27 10:40:22.251: W/System.err(331): at android.os.Handler.handleCallback(Handler.java:587)
12-27 10:40:22.251: W/System.err(331): at android.os.Handler.dispatchMessage(Handler.java:92)
12-27 10:40:22.251: W/System.err(331): at android.os.Looper.loop(Looper.java:123)
12-27 10:40:22.251: W/System.err(331): at android.app.ActivityThread.main(ActivityThread.java:3683)
12-27 10:40:22.261: W/System.err(331): at java.lang.reflect.Method.invokeNative(Native Method)
12-27 10:40:22.261: W/System.err(331): at java.lang.reflect.Method.invoke(Method.java:507)
12-27 10:40:22.271: W/System.err(331): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-27 10:40:22.271: W/System.err(331): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-27 10:40:22.271: W/System.err(331): at dalvik.system.NativeStart.main(Native Method)
Quels changements dois-je faire dans le code. Veuillez me suggérer dès que possible ...
Existe-t-il une autre approche API?
cela m'aide beaucoup. Merci cher. –