Search code examples
javaandroidweb-servicessoapksoap2

Error ksoap2 serialization


I try to make a simple application to pick up a string of a webservice, I have downloaded the package ksopa2, amounts well made and the correct data (tested on Internet tutorials) and I get the error below that you can, you know that might be? thank you very much!

Application:

public class MainActivity extends Activity { 

private static final String SOAP_ACTION = "http://tempuri.org/devuelveString"; //Variables
private static final String METHOD_NAME = "devuelveString";
private static final String NAMESPACE = "http://tempuri.org/";
private static final String URL = "http://localhost:52335/Service1.asmx";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button boton = (Button) findViewById(R.id.Bboton);

    boton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            InvocarWs(); //call the method

        }
    });
}

public void InvocarWs() {
    System.out.println("llama al metodo");
    try {

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

        final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11); // utilizar la version que
                                        // corresponda:11 o 12
        envelope.dotNet = true; // para WS ASMX, sólo si fue construido con
                                // .Net
        envelope.setOutputSoapObject(request);

        HttpTransportSE transporte = new HttpTransportSE(URL);

        transporte.call(SOAP_ACTION, envelope);

        SoapPrimitive resultado = (SoapPrimitive) envelope.getResponse();

        System.out.println("" + resultado.toString());

    } catch (Exception e) {
        System.out.println("catch");
    }
}

}

Error logvcat

04-26 08:03:08.731: E/AndroidRuntime(536): FATAL EXCEPTION: main
04-26 08:03:08.731: E/AndroidRuntime(536): java.lang.NoClassDefFoundError: org.ksoap2.serialization.SoapObject
04-26 08:03:08.731: E/AndroidRuntime(536):  at com.example.prueba.Conexion.InvocarWs(Conexion.java:24)
04-26 08:03:08.731: E/AndroidRuntime(536):  at com.example.prueba.MainActivity$1.onClick(MainActivity.java:25)
04-26 08:03:08.731: E/AndroidRuntime(536):  at android.view.View.performClick(View.java:2485)
04-26 08:03:08.731: E/AndroidRuntime(536):  at android.view.View$PerformClick.run(View.java:9080)
04-26 08:03:08.731: E/AndroidRuntime(536):  at android.os.Handler.handleCallback(Handler.java:587)
04-26 08:03:08.731: E/AndroidRuntime(536):  at android.os.Handler.dispatchMessage(Handler.java:92)
04-26 08:03:08.731: E/AndroidRuntime(536):  at android.os.Looper.loop(Looper.java:123)
04-26 08:03:08.731: E/AndroidRuntime(536):  at android.app.ActivityThread.main(ActivityThread.java:3683)
04-26 08:03:08.731: E/AndroidRuntime(536):  at java.lang.reflect.Method.invokeNative(Native Method)
04-26 08:03:08.731: E/AndroidRuntime(536):  at java.lang.reflect.Method.invoke(Method.java:507)
04-26 08:03:08.731: E/AndroidRuntime(536):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-26 08:03:08.731: E/AndroidRuntime(536):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-26 08:03:08.731: E/AndroidRuntime(536):  at dalvik.system.NativeStart.main(Native Method)

Solution

  • You need to copy the jar(s) to the libs directory in the project. The ADK picks the libraries from that folder and convert them into classes optimized for Dalvik.

    Creating a folder "libs" in the project
    Copying the external jars in to the folder
    Refresh the folder
    Go to properties -> Build path -> Add Jar (not external JAR)
    Clean the project
    Restart Eclipse
    

    Try this also,

    Go to the Order and Export tab on the same popup window
    Check the box against the newly added jar