-1

我正在尝试通过 KSOAP(2.5.8) 调用公共 Web 服务。但它无法从冰淇淋三明治版本的服务中获取数据。它在 2.2 和 2.3 等较低版本中运行良好。这是我的代码。

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import android.util.Log;

public class WebService {

private final String NAMESPACE ="http://aaaaaa.org/";   
private final String URL ="http://5xxxxxxxxxxx.asmx?WSDL";






    public boolean checkUser(String _EmailID, String _Password) {


        boolean result = false; 

        final String SOAP_ACTION ="http://aaaaaaaa/Login";
        final String METHOD_NAME = "Login";

              SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

        PropertyInfo propertyInfoEmail = new PropertyInfo();
        propertyInfoEmail.setName("_EmailID");
        propertyInfoEmail.setValue(_EmailID);
        propertyInfoEmail.setType(String.class);
        request.addProperty(propertyInfoEmail);

        PropertyInfo propertyInfoPassword = new PropertyInfo();
        propertyInfoPassword.setName("_Password");
        propertyInfoPassword.setValue(_Password);
        propertyInfoPassword.setType(String.class);
        request.addProperty(propertyInfoPassword);

         SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.dotNet = true; // put this only if the web service is .NET one
            envelope.setOutputSoapObject(request);
            HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

        try {
            androidHttpTransport.call(SOAP_ACTION, envelope);
            SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
            Log.i("myApp", response.toString());
            if(response.toString().equalsIgnoreCase("true")){
                result = true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    } 

每次它在冰淇淋三明治中返回错误结果。它不会在错误日志中显示任何内容。我应该在这里改变什么。请帮助我。

4

1 回答 1

0

问题是 ICS 不允许您在活动中做一些网络工作。这意味着您必须将对 Web 服务的调用置于后台任务 (AsyncTask) 中。在此链接中,您可以看到该怎么做:这里

于 2012-10-24T21:59:27.073 回答