2014-02-04 2 views
0

У меня есть метод веб-службы, который возвращает ArrayOfString. Я должен вызвать этот метод веб-службы из приложения Android. Но код, который я написал до сих пор, не работает. Он дает ClassCastException.Позвонить веб-службы с помощью android

SoapObject request = null; 
    Object response = null; 
    String[] responseStr; 

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
      SoapEnvelope.VER11); 
    envelope.encodingStyle = SoapSerializationEnvelope.ENC2003; 
    envelope.dotNet = true; 
    envelope.encodingStyle = SoapSerializationEnvelope.XSD; 

    int Timeout = 15 * 1000; 
    HttpTransportSE httpTransport = new HttpTransportSE(
      Common.SOAP_ADDRESS, Timeout); 

    httpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); 

    try { 

     request = new SoapObject(Common.WSDL_TARGET_NAMESPACE, 
       Common.OPERATION_NAME_GET_RESPONDENT_TYPE); 

     envelope.setOutputSoapObject(request); 
     httpTransport.call(Common.SOAP_ACTION_GET_RESPONDENT_TYPE,envelope); 

     response = envelope.getResponse(); 

     responseStr = (String[]) response;   

     return responseStr; 

    } catch (Exception e) { 
     e.printStackTrace(); 
     return null;  
    } 

Что случилось с моим кодом? И как это сделать? Спасибо заранее.

+0

Ваш ответ вебсервис в XML или JSON? –

+0

Check: [ksoap2 casting getResponse()] (http://stackoverflow.com/questions/3038165/ksoap2-casting-getresponse) –

+0

Ответ на веб-службу @dinesh в XML. – Suniel

ответ

0

Вы можете использовать это:

public class CallSoap 
{ 
    public String SOAP_ACTION = "http://tempuri.org/CreateEvent"; 

    public String OPERATION_NAME = "CreateEvent"; 

    public final String WSDL_TARGET_NAMESPACE = "http://tempuri.org/"; 

    public String erorr=""; 

    public final String SOAP_ADDRESS = "http://xxxxx/Service1.asmx"; 

    SoapObject request; 
    SoapSerializationEnvelope envelope; 

    //AndroidHttpTransport androidHttpTransport; 
    HttpTransportSE androidHttp; 
public CallSoap() 
{ 
} 


protected void SetEnvelope() { 

    try { 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 

     // Creating SOAP envelope   
     envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 

     //You can comment that line if your web service is not .NET one. 
     envelope.dotNet = true; 

     envelope.setOutputSoapObject(request); 
     androidHttp = new HttpTransportSE("http://10.0.2.2:54869/Service1.asmx"); 
     // androidHttpTransport = new AndroidHttpTransport("http://10.0.2.2:54869/Service1.asmx"); 
     androidHttp.debug = true; 

    } catch (Exception e) { 
     System.out.println("Soap Exception---->>>" + e.toString());  
    } 
} 

public String[] Save() 
{ 
    try 
     { 
      androidHttp.call(SOAP_ACTION, envelope); 
      //Vector<String> result = null; 
      //result = (Vector<String>) envelope.getResponse(); 
      String result = envelope.getResponse().toString(); 
      return result; 
     } 
    catch (Exception exception) 
     { 
      return exception.toString(); 
     } 

    } 
+0

Вы должны написать что-то о том, «Что конкретно было в этом и какова резолюция?» –

+0

он хочет использовать android для получения массива строки из веб-службы –

+0

Я могу прочитать из вопроса :) но какова резолюция, которую вы дали в своем ответе? Почему бы вам не написать/включить проблему/решение вместе с кодом! –

Смежные вопросы