2012-06-11 100 views
1

我在android中调用soap Web服务,但是响应仅仅是anyType {}。但回应数据并未到来。它只是给出如此多的响应以及如何获得响应数据。在android中调用soap webservice

private static String SOAP_ACTION = "http://tempuri.org/IService1/FindEmployee"; 
      private static String NAMESPACE = "http://tempuri.org/";  
      private static String METHOD_NAME = "FindEmployee"; 
      private static String URL = "http://192.168.1.9/Employee/Service1.svc?wsdl"; 
      private TextView tv; 

      StringBuilder sb; 

      private XmlSerializer writer; 
      private TextView lblResult1; 


      @Override 
      public void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.main); 

       lblResult1 = (TextView) findViewById(R.id.textView1); 
       SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
       request.addAttribute("Empid", "R001"); 

       SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
       envelope.dotNet=true; 
       envelope.setOutputSoapObject(request); 
       HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
       try { 
        androidHttpTransport.call(SOAP_ACTION, envelope); 
       SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn; 
       lblResult1.setText(resultsRequestSOAP.toString()); 
       } catch (Exception e) 
       { 

       System.out.println("Error"+e); 
       } 

      } 
+0

使用addProperty代替addAtribute in line request.addAttribute(“Empid”,“R001”); – himanshu

+0

尝试更改request.addProperty(“Empid”,“R001”);而不是request.addAttribute(“Empid”,“R001”); – Richa

+0

你正在使用它的webservice它基于Java的还是.net baesd –

回答

0
SoapObject request = new SoapObject(NAMESPACE, methodName); 
      request.addProperty("Empid", "R001"); 

      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
      envelope.setOutputSoapObject(request); 
      AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL); 
      androidHttpTransport 
      .setXmlVersionTag("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); 
      envelope.dotNet = true; 
      androidHttpTransport.debug = true; 
      androidHttpTransport.call(newSoapAction, envelope); 
      InputStream in = new ByteArrayInputStream(androidHttpTransport.responseDump.getBytes());  
    System.out.println("WS >> Response: "+androidHttpTransport.responseDump); // you will get response overhere  
+0

'AndroidHttpTransport'已被弃用使用'HttpTransportSE' –

+0

我没有得到响应数据我只是得到结果:06-11 11:41:43.687:W/result(450): Kumar

0

只是写的这个lblResult1.setText(resultsRequestSOAP.getProperty(0).toString());

代替lblResult1.setText(resultsRequestSOAP.toString());

可能它会帮助你。

如果它不工作,这意味着您的web服务不会返回任何响应,即您的web服务不从数据库获取数据。

如果您需要更多帮助,请写信给我。