无法从Android中的Web服务解析

时间:2013-12-12 09:53:08

标签: java android web-services

我在使用此代码时获得Exception,但它适用于其他链接。

public class WebserviceCall {

    static WebserviceCall com;
    String namespace = "http://tempuri.org/";
    private String url = "http://sicsglobal.co.in/T-Drive/WebService_TDrive.asmx";
    String SOAP_ACTION;
    SoapObject request = null, objMessages = null;
    SoapSerializationEnvelope envelope;
    AndroidHttpTransport androidHttpTransport;

    public static WebserviceCall getInstance() {
        if (com == null)
            return new WebserviceCall();
        else
            return com;
    }

    protected void SetEnvelope() {
        try {
            envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.dotNet = true;
            envelope.setOutputSoapObject(request);
            androidHttpTransport = new AndroidHttpTransport(url);
            androidHttpTransport.debug = true;

        } catch (Exception e) {
            System.out.println("Soap Exception SetEnvelope (); \n"
                    + e.toString());
        }
    }

    public String getConvertedWeight(String MethodName, String thisUsername,
            String thisPassword) {
        try {
            SOAP_ACTION = namespace + MethodName;
            request = new SoapObject(namespace, MethodName);

            request.addProperty("userId", "" + thisUsername.trim());
            request.addProperty("password", thisPassword.trim());

            SetEnvelope();

            try {
                androidHttpTransport.call(SOAP_ACTION, envelope);
                String result = envelope.getResponse().toString();
                return result;
            } catch (Exception e) {
                return e.toString();
            }
        } catch (Exception e) {
            // TODO: handle exception
            return e.toString();
        }
    }

}

2 个答案:

答案 0 :(得分:1)

您应该准备肥皂请求,然后您可以执行正确的http请求,因为您要连接的Web服务是肥皂服务,为此您可以使用ksoap2-android来准备肥皂请求

另请参阅此处How to call a SOAP web service on Android

答案 1 :(得分:0)

尝试使用Asynctask。

private class Task extends AsyncTask<String, Void, String> {

    protected void onPreExecute() {

    }

    @Override
    protected String doInBackground(String... urls) {

                    //your code here
            return response;
    }

    @Override
    protected void onPostExecute(String response) {
        //treat the response here   
    }
}

查看here以获取有关它的更多信息。

如果这不起作用,请发布您的logcat。