学习中遇到这样一个问题。
我学习使用webSerevice,用ksoap2 2.6.0的jar包。
问题是我在模拟器中运行都是正常的,但是发布到我手机上的时候总是报错
01-10 11:44:31.420: W/System.err(7032): java.net.SocketTimeoutException: Connection timed out
01-10 11:44:31.420: W/System.err(7032):  at org.apache.harmony.luni.platform.OSNetworkSystem.connect(Native Method)
01-10 11:44:31.420: W/System.err(7032):  at dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:357)
01-10 11:44:31.420: W/System.err(7032):  at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:204)
01-10 11:44:31.430: W/System.err(7032):  at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:437)
01-10 11:44:31.430: W/System.err(7032):  at java.net.Socket.connect(Socket.java:983)
01-10 11:44:31.430: W/System.err(7032):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:75)
01-10 11:44:31.430: W/System.err(7032):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48)
01-10 11:44:31.440: W/System.err(7032):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:322)
01-10 11:44:31.450: W/System.err(7032):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89)
01-10 11:44:31.450: W/System.err(7032):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:285)
01-10 11:44:31.450: W/System.err(7032):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:267)
01-10 11:44:31.450: W/System.err(7032):  at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:205)
01-10 11:44:31.450: W/System.err(7032):  at org.ksoap2.transport.ServiceConnectionSE.connect(ServiceConnectionSE.java:48)
01-10 11:44:31.450: W/System.err(7032):  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:90)
01-10 11:44:31.460: W/System.err(7032):  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:50)
请大家帮忙指导下:
1 在模拟器上是好的,只在手机上不行
2 我尝试过了手机wifi和移动网络连接,都没有效果
3 程序的INTERNET权限我已经加上了
4 是否是ksoap2 的包问题?个人觉得是timeout时间设置出了问题.请遇到过此类问题的帮助下,不胜感激!

解决方案 »

  1.   

    我也看过重写settimeout方法的解决方案,但是还是不行啊,而且ksoap2 2.6.0的包貌似已经兼容了set time out 的重写方法!
    请问你遇到过这样的方法吗?
    请详解!
    谢谢!
      

  2.   

    不是啊,我们都是访问气象中心的webservice 啊!
      

  3.   

    可能还是你的程序有问题,把那个webservice网址贴出来我试下。
      

  4.   

    private static final String NAMESPACE = "http://WebXml.com.cn/";private static String URL = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx";private static final String METHOD_NAME = "getWeatherbyCityName";private static String SOAP_ACTION = "http://WebXml.com.cn/getWeatherbyCityName";
    function:
                            Log.d("getWeather", "getWeather start...");
    SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);
    rpc.addProperty("theCityName", selectCity); SoapSerializationEnvelope envelope = new     SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true;
    envelope.setOutputSoapObject(rpc);
    int MSG_TIMEOUT = 15000;
    HttpTransportSE ht = new HttpTransportSE(URL,MSG_TIMEOUT);
    try {
    ht.call(SOAP_ACTION, envelope);
                            SoapObject result=(SoapObject)envelope.getResponse();
                            updateUI(result);//这个是我自己的方法
            } catch (IOException e) {
                e.printStackTrace();
            } catch (XmlPullParserException e) {
                e.printStackTrace();
            } 
      

  5.   


    真机wifi下测试没问题。gprs超时
      

  6.   

    访问GPRS是不是需要另外的权限啊?请问下!
      

  7.   

    HttpTransportSE httpTranstation = new HttpTransportSE(WSDL,MSG_TIMEOUT); 说这个undefined啊