代码之家  ›  专栏  ›  技术社区  ›  Jaime Montoya

java.net.unknownhostexception:无法解析主机“<url>”:没有与主机名关联的地址

  •  0
  • Jaime Montoya  · 技术社区  · 6 年前

    我百分之百确定电话有互联网连接。我可以浏览网站和连接工作。尽管如此,从我的应用程序中,我看到了这个错误:

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

    在源代码中,我提供的url来自web浏览器,我可以访问它。

    解决方案 java.net.UnknownHostException: Unable to resolve host "<url>": No address associated with hostname and End of input at character 0 of 建议重新检查WiFi或断开连接,然后重新连接到WiFi网络。我试过这样做,甚至重新启动电话。我肯定能上网。

    有趣的是,一切都在android 6.x及更高版本上运行。这个错误只在android 4.x和5.x中发生在我的应用程序上。

    更新1:

    我试图从应用程序访问的URL的代码:

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

    当我访问存储在 MY_URL ,我在Web浏览器中看到这一点,一个JSON响应:

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

    网址正常,我有无线网络。一切都在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”:“巴拿马”,“slug”:“巴拿马城”},{“name”:“哥伦比亚”,“slug”:“波哥大”}}
    

    网址正常,我可以上网,wifi也很好,因为我可以浏览网站,一切都很正常。可能是间歇性的wifi?在我看来,WiFi和互联网连接一切都很好。当我使用 获取数据() 从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:

    我将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 回复  |  直到 6 年前
        1
  •  0
  •   Jaime Montoya    6 年前

    我想我现在需要结束这个问题,因为它与另一个问题直接相关: javax.net.ssl.SSLPeerUnverifiedException: No peer certificate on Android 4.x and 5.x 是的。所以对另一个问题的修正也将成为对这个问题的修正。