Search code examples
web-servicesclasscastexceptionandroid-ksoap2

java.lang.classcastexception - SOAP Fault - Using KSOAP2 in Android


Searched quite a bit. The problem with these errors is that while the text might appear the same, the problem is always different.

My service takes ONE string value and returns a string response. Here is my code:

private class UploadStats extends AsyncTask<String, Void, String>
{
    private static final String WSDL_TARGET_NAMESPACE = "http://tempuri.org/";
    private static final String SOAP_ADDRESS = "http://192.168.1.101/rss/RSS_Service.asmx?WSDL";

    private static final String INSERTURLACTION = "http://192.168.1.101/rss/RSS_Service.asmx/InsertURL";
    private static final String INSERTURLMETHOD = "InsertURL";


    @Override
    protected String doInBackground(String... url)
    {
        String status = "";

        SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,
                INSERTURLMETHOD);

        request.addProperty("url", "www.yahoo.com");
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;

        envelope.setOutputSoapObject(request);
        HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);

        try
        {
            httpTransport.call(INSERTURLACTION, envelope);
            SoapObject response = (SoapObject) envelope.bodyIn;

            status = response.getProperty(0).toString();
        }
        catch (Exception exception)
        {

            Log.d("Error", exception.toString());
        }

        if(status.equals("1"))
        {
            Log.d("InsertURL", "New URL Inserterd");
        }

        else if(status.equals("0"))
        {
            Log.d("InsertURL", "URL Exists. Count incremented");
        }

        else
        {
            Log.d("InsertURL", "Err... No");
        }

        return status;
    }

}

I get the error: java.lang.classcastexception org.ksoap2.SoapFault

What am I doing wrong? If any more details are needed, I can add them.


Solution

  • The error was related to the webservice.

    An incorrect namespace on the service side can cause this error (as can a lot of other problems).

    Best way to check is to run the webservice on the local machine (where the service is hosted).