2015-02-23 65 views
0

我试图从Android应用程序连接到外部web服务,但目前它在XML响应中崩溃,请帮助我注意如果调用结构构建不正确或任何响应代码崩溃。这里是我的代码:连接到外部web服务无法在Android上响应

public class sri extends AsyncTask<String, String, String> 
{ 
public final static String URL = "http://qa-suia.ambiente.gob.ec:8092/suiawebservices/SuiaServices?wsdl"; 
public static final String NAMESPACE = "http://client.ambiente.gob.ec/"; 
public static final String SOAP_ACTION_PREFIX = "/"; 
private static final String METHOD = "getRuc"; 

private String resp; 
SoapSerializationEnvelope sobre = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
protected String doInBackground(String... param) 
{ 

    SoapObject request = new SoapObject(NAMESPACE,METHOD); 
    //String JsonString=Serializa(); 
    request.addProperty("user","99999999"); 
    request.addProperty("pass","xxxxxxxxxxxx"); 
    request.addProperty("rucNumber","99999999999"); 

    //sobre.dotNet=true; 
    sobre.setOutputSoapObject(request); 
    try 
    { 
     HttpTransportSE transporte=new HttpTransportSE(URL); 
     transporte.call(NAMESPACE+METHOD, sobre); 
    } catch (Exception e) 
    { 
     String msn="error"; 
     return msn; 
    } 

    try { 
     if (sobre != null) { 
      SoapPrimitive response = (SoapPrimitive)sobre.getResponse(); 
      resp=response.toString(); 

     } 
     else 
     { 

     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
     resp = e.getMessage(); 
    } 

    return resp; 
} 

protected void onProgressUpdate(Integer... values) 
{   
} 

public void onPreExecute() 
{ 
} 


public void onPostExecute(String result) 
{ 

    String resultado=result; 


} 
+0

有什么你看到的堆栈跟踪? – ucsunil 2015-02-23 16:34:57

+0

你在使用像ksoap2这样的外部库吗? – 2015-02-23 16:42:10

+0

@KristyWelsh是目前仅使用kso​​ap2和json – Luiggi 2015-02-23 16:49:44

回答

0

这里的工作代码,我做调用的.Net服务是什么(它看起来就像你不能把你的要求放进一个信封里):

private static SoapPrimitive callProcServiceForScalar(String serviceMethod, String storedProc, String params) throws Exception { 
    String NAMESPACE = "http://" + YourIPAddress + "/"; 
    String METHOD_NAME = getMethodName(serviceMethod); 
    String SOAP_ACTION = NAMESPACE + METHOD_NAME; 
    String URL = "http://" + YourIP + "/YourService.asmx"; 
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 


    request.addProperty("sPassword", sYourPassword); 
    request.addProperty("sData", sServerDB); 
    request.addProperty("sSP_Name", storedProc); 
    request.addProperty("sParam", params); 

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 



    // Enable the below property if consuming .Net service 
    envelope.dotNet = true; 
    envelope.setOutputSoapObject(request); 


    numberOfBytesTransmitted = numberOfBytesTransmitted + StringToBytes(request.toString()); 


    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL, timeout); 

    SoapPrimitive returnable = null; 
    try { 
     androidHttpTransport.call(SOAP_ACTION, envelope); 
     returnable = (SoapPrimitive)envelope.getResponse(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     throw new Exception("Msg:" + e.getMessage() + "; SP:" + storedProc + "; Params: " + params + "; Method:" + METHOD_NAME); 
    } 

    return returnable; 
} 
+0

该服务是与Java,我认为这些网址没有正确构建。 这是网络服务http://qa-suia.ambiente.gob.ec:8092/suiawebservices/SuiaServices?wsdl 但它不以这种方式运作 public static final String URL =“http:// qa- suia.ambiente.gob.ec:8092/suiawebservices/SuiaServices?wsdl“; public static final String NAMESPACE =“http://client.ambiente.gob.ec/”; private static final String METHOD =“getRuc”; and llamda this transporte.call(NAMESPACE + METHOD,above); – Luiggi 2015-02-23 17:43:11

+0

您是否尝试将您的请求放入信封中? – 2015-02-23 20:58:26