我正在尝试从Android应用程序连接到外部Web服务,但目前它在XML响应上崩溃,如果调用结构不正确或任何响应代码崩溃,请帮助我注意。这是我的代码:
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 :(得分: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;
}