Android连接到无效Web服务使应用程序挂起

Android连接到无效Web服务使应用程序挂起,android,web-services,freeze,Android,Web Services,Freeze,我的应用程序使用ksoap2连接到web服务。应用程序允许用户更改提供web服务的服务器的IP地址/URL(在设置中) 问题是,当用户将IP地址/URL更改为无效位置时,应用程序会挂起很长时间,并且LogCat显示应用程序无法连接到提供的套接字描述 我该如何解决这个问题?如果找不到Web服务,如何阻止应用程序挂起 如果找不到web服务,我希望应用程序UI保持原样。有没有办法避免应用程序挂起 这是我的密码。请建议避免应用程序挂起的任何方法 private void getControlFromS

我的应用程序使用ksoap2连接到web服务。应用程序允许用户更改提供web服务的服务器的IP地址/URL(在设置中)

问题是,当用户将IP地址/URL更改为无效位置时,应用程序会挂起很长时间,并且LogCat显示应用程序无法连接到提供的套接字描述

我该如何解决这个问题?如果找不到Web服务,如何阻止应用程序挂起

如果找不到web服务,我希望应用程序UI保持原样。有没有办法避免应用程序挂起

这是我的密码。请建议避免应用程序挂起的任何方法

 private void getControlFromServer()  {
    // TODO Auto-generated method stub

    SoapObject request = new SoapObject(NAMESPACE, METHOD_GET_CONTROL);
    SoapSerializationEnvelope envelope = 
        new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);


HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);




     try {
             androidHttpTransport.call(SOAP_ACTION_GET_CONTROL, envelope);




            SoapObject result=(SoapObject)envelope.getResponse(); //To get the data.

            tvTemp.setText("Received :" + result.getProperty(0).toString()+ " : " + result.getProperty(1).toString() +  " : " + result.getProperty(2).toString() +  " : " + result.getProperty(3).toString() +  " : " + result.getProperty(4).toString() +  " : " + result.getProperty(5).toString() +  " : " + result.getProperty(6).toString());

     } catch (Exception e) {


            tvTemp.setText("Error");
            e.printStackTrace();

        }


}

ConnectionTimeOut设置到您的
HttpTransportSE
对象

使用最新版本或更高版本

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport;
SoapObject response = null;

try {
        androidHttpTransport = new HttpTransportSE(URL,6000); // Tried Setting the Timeout to 1 Minute
        androidHttpTransport.debug = true;
        androidHttpTransport.call(SOAP_ACTION,envelope);
        response = (SoapObject)envelope.bodyIn;
    } catch (IOException e) {
        e.printStackTrace();
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    }

在您的Web服务调用中使用connectionTimeOut。您能提供代码片段吗?此代码是否在独立线程中运行?@MoshErsan:URL正确时,我的代码工作正常。但是,如果它是错误的,那么应用程序将挂起约30秒。@swayam您是否在API>10的设备/模拟器上测试了您的应用程序?谢谢。现在很有魅力。我已经在使用ksoap2版本2.6.5。只需将参数添加到newHttpTansportSE()。欢迎好友。。!快乐的编码。。!