java.net.UnknownHostException: невозможно разрешить хост "<url>": нет адреса, связанного с именем хоста - PullRequest
0 голосов
/ 02 июля 2018

Я на 100% уверен, что телефон подключен к интернету. Я могу просматривать веб-сайты, и связь работает. Тем не менее, из моего приложения я вижу эту ошибку:

java.net.UnknownHostException: Unable to resolve host "<url>": No address associated with hostname

В исходном коде URL-адрес, который я предоставляю, работает из веб-браузера, я могу его посетить.

Решение на java.net.UnknownHostException: невозможно разрешить хост "": нет адреса, связанного с именем хоста, и конец ввода в символе 0 из предлагает дважды проверить WiFi или отключиться, а затем переподключиться к сети WiFi. Я попытался сделать это и даже перезагрузить телефон. У меня точно есть доступ в интернет.

Интересно то, что все работает на Android 6.x и выше. Эта ошибка возникает в моем приложении только в Android 4.x и 5.x.

ОБНОВЛЕНИЕ 1:

Код URL, который я пытаюсь получить из приложения:

public static final String MY_URL = CORE_URL + "Panama/products/json_index/";

Когда я захожу на URL, сохраненный в MY_URL, я вижу это в веб-браузере, ответ JSON:

{"result":"Success","Cities":[{"name":"Panama","slug":"panama-city"},{"name":"Colombia","slug":"Bogota"}]}

URL работает, и у меня есть WiFi. Все работает на Android 6.x и выше. Странно, что только Android 4.x и 5.x выходят из строя.

ОБНОВЛЕНИЕ 2:

Вот как я ссылаюсь на URL позже в коде:

Util.requestGetData(Util.MY_URL, this, ResponseListener.REQUEST_MY_CITIES_LIST);

Я также использую это:

@Override
public void onResponse(final Response r, final int rid) {
    ...
    docment = new JSONObject(r.getData());
    ...
}

Проблема возникает, когда я использую r.getData().

ОБНОВЛЕНИЕ 3:

Если с телефона с Android 4.x я захожу по URL, то получаю:

{"result":"Success","Cities":[{"name":"Panama","slug":"panama-city"},{"name":"Colombia","slug":"Bogota"}]}

URL работает, и у меня есть доступ к интернету, и Wi-Fi в порядке с тем, что я вижу, потому что я могу просматривать веб-сайты, и все нормально. Может быть, прерывистый WiFi? Для меня все выглядит хорошо с Wi-Fi и доступ в интернет в порядке. Когда я использую r.getData() из Android 6.x и выше, приложение работает без проблем. Что может происходить в Android 4.x и 5.x, что я получаю эту ошибку. Что-то странное в том, что раньше он работал, но в последние несколько недель он внезапно перестал работать, и я вообще не изменил код.

ОБНОВЛЕНИЕ 4:

Если в своем коде я вместо этого использую "http://www.google.com" в качестве URL-адреса, я получаю другую ошибку в Android Studio Logcat, но в приложении точно такая же проблема:

07-01 19:28:58.791 28351-28399/com.myapp D/tag: http://www.google.com
07-01 19:28:59.171 28351-28351/com.myapp D/OpenGLRenderer: Enabling debug mode 0
07-01 19:28:59.171 28351-28351/com.myapp D/ProgressBar: updateDrawableBounds: left = 0
07-01 19:28:59.171 28351-28351/com.myapp D/ProgressBar: updateDrawableBounds: top = 0
07-01 19:28:59.171 28351-28351/com.myapp D/ProgressBar: updateDrawableBounds: right = 72
07-01 19:28:59.171 28351-28351/com.myapp D/ProgressBar: updateDrawableBounds: bottom = 72
07-01 19:28:59.231 28351-28407/com.myapp I/dalvikvm: Could not find method android.content.Context.checkSelfPermission, referenced from method com.urbanairship.analytics.EventApiClient.getLocationPermission
07-01 19:28:59.231 28351-28407/com.myapp W/dalvikvm: VFY: unable to resolve virtual method 138: Landroid/content/Context;.checkSelfPermission (Ljava/lang/String;)I
07-01 19:28:59.231 28351-28407/com.myapp D/dalvikvm: VFY: replacing opcode 0x6e at 0x000c
07-01 19:28:59.431 28351-28351/com.myapp E/ViewRootImpl: sendUserActionEvent() mView == null
07-01 19:28:59.471 28351-28351/com.myapp W/InputMethodManager: Ignoring onBind: cur seq=57, given seq=56

ОБНОВЛЕНИЕ 5:

Я изменил значение в MY_URL на "http://www.google.com",, как вы можете видеть в ОБНОВЛЕНИИ 4 выше. Теперь я изменил его обратно на URL, который у меня был раньше, и теперь ошибка, которую я вижу, отличается, но приложение по-прежнему не работает таким же образом. Это ошибка сейчас:

07-01 19:36:31.931 28645-28645/com.myapp D/OpenGLRenderer: Enabling debug mode 0
07-01 19:36:31.931 28645-28645/com.myapp D/ProgressBar: updateDrawableBounds: left = 0
07-01 19:36:31.931 28645-28645/com.myapp D/ProgressBar: updateDrawableBounds: top = 0
07-01 19:36:31.931 28645-28645/com.myapp D/ProgressBar: updateDrawableBounds: right = 72
07-01 19:36:31.931 28645-28645/com.myapp D/ProgressBar: updateDrawableBounds: bottom = 72
07-01 19:36:32.011 28645-28705/com.myapp I/dalvikvm: Could not find method android.content.Context.checkSelfPermission, referenced from method com.urbanairship.analytics.EventApiClient.getLocationPermission
07-01 19:36:32.011 28645-28705/com.myapp W/dalvikvm: VFY: unable to resolve virtual method 138: Landroid/content/Context;.checkSelfPermission (Ljava/lang/String;)I
07-01 19:36:32.011 28645-28705/com.myapp D/dalvikvm: VFY: replacing opcode 0x6e at 0x000c
07-01 19:36:32.031 28645-28698/com.myapp W/System.err: javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
07-01 19:36:32.031 28645-28698/com.myapp W/System.err:     at com.android.org.conscrypt.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:146)
07-01 19:36:32.031 28645-28698/com.myapp W/System.err:     at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93)
07-01 19:36:32.031 28645-28698/com.myapp W/System.err:     at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:388)
07-01 19:36:32.031 28645-28698/com.myapp W/System.err:     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165)
07-01 19:36:32.031 28645-28698/com.myapp W/System.err:     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
07-01 19:36:32.031 28645-28698/com.myapp W/System.err:     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
07-01 19:36:32.031 28645-28698/com.myapp W/System.err:     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
07-01 19:36:32.031 28645-28698/com.myapp W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
07-01 19:36:32.031 28645-28698/com.myapp W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
07-01 19:36:32.031 28645-28698/com.myapp W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
07-01 19:36:32.031 28645-28698/com.myapp W/System.err:     at com.myapp.Util.Util$1.run(Util.java:242)
07-01 19:36:32.041 28645-28698/com.myapp W/System.err:     at java.lang.Thread.run(Thread.java:841)
07-01 19:36:32.251 28645-28645/com.myapp E/ViewRootImpl: sendUserActionEvent() mView == null
07-01 19:36:32.301 28645-28645/com.myapp W/InputMethodManager: Ignoring onBind: cur seq=60, given seq=59

ОБНОВЛЕНИЕ 6:

Теперь я постоянно вижу эту ошибку, и java.net.UnknownHostException: Unable to resolve host "<url>": No address associated with hostname больше никогда не появляется в Android Studio Logcat:

07-02 09:30:15.468 9350-9391/com.myapp W/System.err: javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
07-02 09:30:15.478 9350-9391/com.myapp W/System.err:     at com.android.org.conscrypt.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:146)
07-02 09:30:15.478 9350-9391/com.myapp W/System.err:     at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93)
07-02 09:30:15.478 9350-9391/com.myapp W/System.err:     at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:388)
07-02 09:30:15.478 9350-9391/com.myapp W/System.err:     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165)
07-02 09:30:15.478 9350-9391/com.myapp W/System.err:     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
07-02 09:30:15.478 9350-9391/com.myapp W/System.err:     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
07-02 09:30:15.478 9350-9391/com.myapp W/System.err:     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
07-02 09:30:15.478 9350-9391/com.myapp W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
07-02 09:30:15.478 9350-9391/com.myapp W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
07-02 09:30:15.478 9350-9391/com.myapp W/System.err:     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
07-02 09:30:15.478 9350-9391/com.myapp W/System.err:     at com.myapp.Util.Util$1.run(Util.java:242)
07-02 09:30:15.478 9350-9391/com.myapp W/System.err:     at java.lang.Thread.run(Thread.java:841)
07-02 09:30:15.628 9350-9350/com.myapp E/ViewRootImpl: sendUserActionEvent() mView == null
07-02 09:30:15.668 9350-9350/com.myapp W/InputMethodManager: Ignoring onBind: cur seq=77, given seq=76

Может быть, настоящая проблема заключается в сертификате SSL, и он не имеет ничего общего с проблемами WiFi или доступностью используемого мной URL-адреса?

1 Ответ

0 голосов
/ 02 октября 2018

Я думаю, мне нужно закрыть этот вопрос сейчас, потому что он стал напрямую связан с другим вопросом: javax.net.ssl.SSLPeerUnverifiedException: Нет сертификата однорангового узла на Android 4.x и 5.x . Таким образом, решение этого другого вопроса также станет решением этого вопроса.

...