Search code examples
androidsoaphttpresponsesoap1.2

unable to get Response from HttpResponse when passing soap object (soap1.2) android?


Code :

            String response ;
            try {
                final String SOAP_ACTION = "http://tempuri.org/myAction";
                final String URL = "MYURL";
                HttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(URL);
                String bodyOut = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\">"
                        + "   <soapenv:Header/>"
                        + "   <soapenv:Body>"
                        ........ MY Data.......
                        + "      </tem:Login>"
                        + "   </soapenv:Body>" + "</soapenv:Envelope>";

                StringEntity se = new StringEntity(bodyOut, HTTP.UTF_8);
                    //StringEntity se = new StringEntity(request1, HTTP.UTF_8); 
                se.setContentType("text/xml");
                httpPost.addHeader("SOAPAction", SOAP_ACTION);
                httpPost.setEntity(se);

                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity resEntity = httpResponse.getEntity();
                response = EntityUtils.toString(resEntity);
                if (response != null) {
                    Log.i("Response", "" + response);// this is not being printed
                    Log.i("test response", "not null");// this is being printed
                }
                else
                    Log.i("Response", "null");
            } catch (Exception e) {
                e.printStackTrace();
            }

no exception but: Log.i("Response", "" + response);// this is not being printed

LogCat:

08-02 19:04:51.929: I/test response(20413): not null

Solution

  • as its wsHttpBinding WCF service Android

    So I Have Solved this using Following :

    String METHOD_NAME = "MyMethodName"; 
    String NAMESPACE = "http://tempuri.org/"; 
    String URL = "MyUr;";
    String SOAP_ACTION = "http://tempuri.org/MySoapAction"; 
    
    
    
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    
    PropertyInfo req = new PropertyInfo();
    req.name = "xmlstring";
    req.namespace = NAMESPACE;
    req.type = String.class;
    req.setValue("........ MY Data.......");// without these `tags <soapenv:`
    request.addProperty(req);
    
    Element e = new Element();
    e.setName("To");
    e.setNamespace("http://www.w3.org/2005/08/addressing");
    e.addChild(Node.TEXT,"MyUrl");
    
    Element e1 = new Element();
    e1.setName("Action");
    e1.setNamespace("http://www.w3.org/2005/08/addressing");
    e1.addChild(Node.TEXT,
            "http://tempuri.org/SoapAction");
    
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
            SoapEnvelope.VER12);
    envelope.dotNet = true;
    envelope.headerOut = new Element[] { e, e1 };
    envelope.setOutputSoapObject(request);
    
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    androidHttpTransport.call(SOAP_ACTION, envelope);
    SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
    
    String resultData = result.toString();
    Log.i("Result", "" + resultData);