Обнаружена ошибка «Нет маршрута к хосту» при попытке связаться с веб-сервисом - PullRequest
3 голосов
/ 20 октября 2011

Я пытаюсь связаться с веб-сервисом на моем ноутбуке и использую телефон Android в качестве клиента. Я пытался сделать простую функцию входа в систему, однако всякий раз, когда клиент пытается связаться с веб-сервисом, эта ошибка выскакивает в DDMS на Eclipse. Я могу получить доступ к веб-сервису через свою домашнюю сеть, но не могу этого сделать, когда я в школе. В случае, если вы можете спросить это, IP-адрес в моем sch 172.22.XX.XX. Хотя я знаю, что это частный 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)

Ответы [ 4 ]

0 голосов
/ 05 мая 2017

В моем случае мой код выглядел следующим образом в моем веб-сервисе:

public static Song GetSong()
{
  Song song = null;
  // Some database operations
  // Then initialized the object with some data
  if(someValueReturnedFromDb)
  {
    song = new Song();
    song.Source = "Path"; // etc
  }
  return song;
}

После этого я просто изменил код на:

public static Song GetSong()
{
  Song song = new Song();
  // Some database operations
  // Then initialized the object with some data
  if(someValueReturnedFromDb)
  {
    song.Source = "Path"; // etc
  }
  return song;
}
0 голосов
/ 11 декабря 2011

Я столкнулся с той же проблемой здесь, с планшетом (motorola xoom 3.2).

планшет 192.168.1.2 шт 192.162.1.3

когда я установил URL на 192.162.1.3 я получил этот след стека

12-10 22:18:22.050: WARN/System.err(6274): java.net.SocketException: No route to host
12-10 22:18:22.050: WARN/System.err(6274): at     org.apache.harmony.luni.platform.OSNetworkSystem.connect(Native Method)
12-10 22:18:22.050: WARN/System.err(6274): at dalvik.system.****BlockGuard$WrappedNetworkSystem.connect(BlockGuard.java:369)****

когда я пробую несуществующий ip, я все равно не получаю маршрут к хосту, но нет этого blockguard внутри трассировки стека. Шлейф или браузер также работает нормально.

https://groups.google.com/group/android-developers/browse_thread/thread/7d96e7297da43cec

Я думаю, это та же проблема, но понятия не имею

vodoo решение: после перезагрузки планшета и появления той же проблемы я отключил отладку usb на устройстве, отключил wlan (режим полета), заново подключился, перезапустите отладку usb, и по какой-то причине это, похоже, решает проблему

0 голосов
/ 17 апреля 2013

У меня были проблемы с подключением к моей (ASP.NET) веб-службе с другого компьютера из-за проблемы аутентификации.После того, как проблема аутентификации была решена, я все еще получал ошибку «Нет маршрута к хосту» из моего приложения для Android.Выключение и повторное включение WiFi на моем устройстве решило эту проблему для меня.

0 голосов
/ 20 октября 2011

Внутри эмулятора Android хост-компьютер (ваш ноутбук) имеет значение 10.0.2.2 - это должно работать всегда, независимо от того, какие фактические IP-адреса имеет хост-компьютер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...