java - 尝试与 Web 服务通信时遇到 "No route to host"错误

标签 java android sockets

我正在尝试与笔记本电脑上的网络服务进行通信,并使用 Android 手机作为客户端。我试图做一个简单的登录功能,但是,每当客户端尝试与 web 服务通信时,这个错误就会在 Eclipse 上的 DDMS 中弹出。我可以通过家庭网络访问网络服务,但在学校时无法访问。如果您可能会问这个问题,我的 sch 中的 IP 地址是 172.22.XX.XX。虽然我知道是私有(private) IP 地址,但即使我的 Android 手机连接到同一网络,它仍然无法与笔记本电脑上运行的网络服务通信。谁能告诉我如何解决这个问题

10-20 15:00:42.875: 错误/AndroidRuntime(6728): fillInStackTrace():java.net.SocketException: 没有到主机的路由

这是完成工作的函数:

public String[] getPassword(String loginID){

    String[] temp = null;
    SoapObject request = new SoapObject(NAMESPACE, "GetPassword");

    PropertyInfo quotesProperty = new PropertyInfo();
    quotesProperty.setName("LoginID");
    quotesProperty.setValue(loginID);
    quotesProperty.setType(String.class);
    request.addProperty(quotesProperty);

    envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true;
    envelope.setOutputSoapObject(request);

    String result = "";
    HttpTransportSE httpRequest = new HttpTransportSE(URL);
    httpRequest.debug = true;

    try
    {
        httpRequest.call(SOAP_ACTION, envelope);
        Log.e("Request",httpRequest.requestDump.toString());

        SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
        Log.e("Response",httpRequest.responseDump.toString());

        result =  response.toString();
        if(result != null){
            temp = result.split(";");
            passwordSecurity crypto = new passwordSecurity();
            temp[0]= crypto.cryptography(temp[0], false); //decrypt the password
        }

    }
    catch(Exception e)
    {
        e.printStackTrace();
        Log.e("AndroidRuntime", "getMessage(): "+e.getMessage());
        Log.e("AndroidRuntime", "getLocalizedMessage(): "+e.getLocalizedMessage());
        Log.e("AndroidRuntime", "fillInStackTrace(): "+e.fillInStackTrace().toString());

    }
    return temp;
}

来自 DDMS 的警告

10-20 16:56:32.180: WARN/System.err(13034): java.net.SocketException: No route to host
10-20 16:56:32.180: WARN/System.err(13034):     at    org.apache.harmony.luni.platform.OSNetworkSystem.connect(Native Method)
10-20 16:56:32.180: WARN/System.err(13034):     at dalvik.system.BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:357)
10-20 16:56:32.180: WARN/System.err(13034):     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:204)
10-20 16:56:32.180: WARN/System.err(13034):     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:437)
10-20 16:56:32.180: WARN/System.err(13034):     at java.net.Socket.connect(Socket.java:1002)
10-20 16:56:32.180: WARN/System.err(13034):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:75)
10-20 16:56:32.180: WARN/System.err(13034):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:48)
10-20 16:56:32.180: WARN/System.err(13034):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection$Address.connect(HttpConnection.java:322)
10-20 16:56:32.180: WARN/System.err(13034):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:89)
10-20 16:56:32.180: WARN/System.err(13034):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHttpConnection(HttpURLConnectionImpl.java:285)
10-20 16:56:32.180: WARN/System.err(13034):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.makeConnection(HttpURLConnectionImpl.java:267)
10-20 16:56:32.180: WARN/System.err(13034):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:205)
10-20 16:56:32.180: WARN/System.err(13034):     at org.ksoap2.transport.ServiceConnectionSE.connect(ServiceConnectionSE.java:76)
10-20 16:56:32.180: WARN/System.err(13034):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:146)
10-20 16:56:32.180: WARN/System.err(13034):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:95)
10-20 16:56:32.180: WARN/System.err(13034):     at android.wps.server.operations.WifiPositioningServices.getPassword(WifiPositioningServices.java:43)
10-20 16:56:32.180: WARN/System.err(13034):     at android.wps.MainActivity$1.onClick(MainActivity.java:67)
10-20 16:56:32.180: WARN/System.err(13034):     at android.view.View.performClick(View.java:2538)
10-20 16:56:32.180: WARN/System.err(13034):     at android.view.View$PerformClick.run(View.java:9152)
10-20 16:56:32.180: WARN/System.err(13034):     at android.os.Handler.handleCallback(Handler.java:587)
10-20 16:56:32.180: WARN/System.err(13034):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-20 16:56:32.180: WARN/System.err(13034):     at android.os.Looper.loop(Looper.java:123)
10-20 16:56:32.180: WARN/System.err(13034):     at android.app.ActivityThread.main(ActivityThread.java:3691)
10-20 16:56:32.180: WARN/System.err(13034):     at java.lang.reflect.Method.invokeNative(Native Method)
10-20 16:56:32.180: WARN/System.err(13034):     at java.lang.reflect.Method.invoke(Method.java:507)
10-20 16:56:32.180: WARN/System.err(13034):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
10-20 16:56:32.180: WARN/System.err(13034):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
10-20 16:56:32.180: WARN/System.err(13034):     at dalvik.system.NativeStart.main(Native Method)

最佳答案

From inside the Android emulator ,主机(您的笔记本电脑)是 10.0.2.2 - 无论主机的实际 IP 地址是什么,这应该始终有效。

关于java - 尝试与 Web 服务通信时遇到 "No route to host"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7832425/

相关文章:

python - 套接字错误 : Invalid Argument supplied

Java - 使用多点触控

java - JFrame 中的并行可见 JPanel

android - 如何获取音频流的持续时间并从任何点继续音频流

java - Android Wear 位置

android - 停止 Android 操作系统自动更新

java - MMO如何处理真人游戏的每一刻为成千上万的玩家计算和发送数据包?

python - 非阻塞 multiprocessing.connection.Listener?

java - 为什么显示 "The method getPreferenceOnScreen is depriciated"?

java - 如何从嵌套jar中的类获取InputStream?