Я на 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-адреса?