0

when i try to call soap webservices in android after below line

androidHttpTransport.call(SOAP_ACTION, envelope);

program direct jump in to catch program should be call result = envelope.getResponse(); but i haven't revived a response what is the possible solution any one help in this?

try {
    System.out.println("Token ===sssTTTTTT " );

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

    request.addProperty("encAppName", "dsakjsfj");
    request.addProperty("sessionInfo", "sadsadsdf");

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    androidHttpTransport.call(SOAP_ACTION, envelope);

      result = envelope.getResponse();
       Toast.makeText(getBaseContext(), "  Result " + "\n" + result.toString(), Toast.LENGTH_SHORT).show();
       System.out.println("response === " + result.toString());

} catch (Exception e) {
    // txtprint.setText(e.getMessage());
}
Cœur
  • 37,241
  • 25
  • 195
  • 267
Umang H Amin
  • 1
  • 1
  • 4

3 Answers3

2

Please try this this my working code. just do your necessary changes. And if you are saying it is going direct to catch block, it means it is throwing some exception. please try to see what is that. use asynctask for background thread(request response)

// put here your url's..
    private final String URL = "http://192.192.192.192/DemoService/Demo.asmx";
        private final String SOAP_ACTION = "http://tempuri.org/AndroidTestRequest";
        private final String METHOD_NAME = "AndroidTestRequest";


SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        request.addProperty("User", "abcd@gmail.com");
        request.addProperty("Password", "test@123");
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11);
        envelope.headerOut = new Element[1];
        envelope.headerOut[0] = buildAuthHeader();
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);

// you can add your properties here if you want to.
        /*
         * PropertyInfo cityProp = new PropertyInfo();
         * 
         * cityProp.setType(String.class); request.addProperty(cityProp);
         */

        Log.e("value of request", request.toString());
        Log.e("Value of envolope ", envelope.toString());

        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

        try {

            androidHttpTransport.call(SOAP_ACTION, envelope);

                    Log.i("myAppEnvelope", envelope.toString());

            SoapObject response = (SoapObject) envelope.getResponse();

            SoapObject object = (SoapObject) response.getProperty("value");


        } catch (Exception e) {
            e.printStackTrace();
        }
Mahaveer Muttha
  • 1,727
  • 4
  • 21
  • 33
  • in above code after androidHttpTransport.call(SOAP_ACTION, envelope); this line direct jump in catch block any solution ??? – Umang H Amin Jun 27 '13 at 16:56
  • @UmangHAmin: that means it is throwing some exception. print that exception (e.printStackTrace()). and try to see what exception you are getting. – Mahaveer Muttha Jun 28 '13 at 05:22
0

Is your soap service is running properly?if yes then you must call your webservice thr asynctask in android.what Exception you get in catch block?check it that will help you get out of it.Hope this helps you.check below code call this class method thr asynctask

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;


public class WebCommunication {

    public static String SOAP_ACTION = "";
    public static String METHOD_NAME = "";
    public static String NAMESPACE = "http://tempuri.org/";
    public static String URL = "http://192.168.1.108:8085/wsTrinfin/Service.asmx";//your webservice 

    public String CALLSOAP(String Data)
    {
        try {
            String Result="";

            METHOD_NAME = "ManageLicense";
            SOAP_ACTION = "http://tempuri.org/ManageLicense";

            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
            request.addProperty("Data",Data);
            request.addProperty("ActivationType","Online");
            request.addProperty("ValidationParameter","TABLET");
            request.addProperty("SenderPhoneNumber","NA");

            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                    SoapEnvelope.VER11);
            envelope.dotNet = true;         
            envelope.setOutputSoapObject(request);
            HttpTransportSE aht = new HttpTransportSE(URL);
            SoapPrimitive results = null;
            try 
            {
                aht.call(SOAP_ACTION, envelope);
                results = (SoapPrimitive) envelope.getResponse();
            } 
            catch (Exception e) 
            {               
                //Log.Write("Unable to connect to webservice : " +e.toString());
                return "ERROR";
            }           
            Result= results.toString();         

            return Result;

        } catch (Exception e) {
            //Log.Write("Error Occured in :"+URL+e.toString(),Log._LogLevel.NORAML);
            return "ERROR";
        }
    }


}
Sharad Mhaske
  • 1,103
  • 9
  • 19
  • Yes thanks i have use your code but after below line aht.call(SOAP_ACTION, envelope); direct crawl catch (Exception e) now what i do ??? – Umang H Amin Jun 27 '13 at 14:17
0
public InputStream sendPOSTRequest(String strPostURL, String strParamToPost) 
{


    strPostURL = strPostURL.replace(" ", "%20");

    DefaultHttpClient defaultHttpClient = getHttpClient();
    HttpPost httpPost = new HttpPost(strPostURL);
    httpPost.addHeader("Content-Type", "text/xml; charset=utf-8");



    InputStream inputStream = null;

    try 
    {
        if(strParamToPost != null)
            httpPost.setEntity(new StringEntity(strParamToPost)); 

        LogUtils.info(LogUtils.SERVICE_LOG_TAG, "**Executing requst**");

        HttpResponse response = defaultHttpClient.execute(httpPost);

        LogUtils.info(LogUtils.SERVICE_LOG_TAG, "##Response received##");

        HttpEntity entity = response.getEntity();
        inputStream = entity.getContent();
    }
    catch (Exception e)
    {
        LogUtils.error("HttpHelper", "PostData Error :"+e.toString());
    }
    return inputStream;
}
user3109745
  • 75
  • 1
  • 2