【问题标题】:android urlConnection.getInputStream throw exception when WIFI is disabled禁用WIFI时android urlConnection.getInputStream抛出异常
【发布时间】:2016-03-26 18:06:36
【问题描述】:

仅当 WIFI 被禁用且手机正在使用移动数据时才会出现此问题。 如果我有 WIFI 连接,那么应用程序可以正常工作。

这里是代码细节:

清单:

使用权限 android:name="android.permission.INTERNET"

使用权限 android:name="android.permission.ACCESS_NETWORK_STATE"

Android java 代码:

私有字符串 getUrlContents(String theUrl) {

StringBuilder content = new StringBuilder();

try {
    URL url = new URL(theUrl);
    URLConnection urlConnection = url.openConnection();
    BufferedReader bufferedReader = new BufferedReader(
            new InputStreamReader(urlConnection.getInputStream()), 8);
    String line;
    while ((line = bufferedReader.readLine()) != null) {
        content.append(line + "\n");
    }
    bufferedReader.close();

}catch (Exception e) {
    e.printStackTrace();
}

return content.toString();

}

这个函数抛出异常:

java.net.UnknownHostException:无法解析主机“maps.googleapis.com”:没有与主机名关联的地址

url 值在哪里:

https://maps.googleapis.com/maps/api/place/search/json?&location=42.2793153,-71.5005702&radius=5000&types=restaurant&sensor=false&key=AIzaSyDX-nKc9OFD_jW-73nwyfEaqFGfwzS6WRI

这个网址在粘贴到网址时可以正常工作,并为我提供正确的 json 值。

同样,连接WIFI时也不会出现此异常。

任何帮助将不胜感激。

【问题讨论】:

    标签: android


    【解决方案1】:

    UnknownHostException 表示无法解析服务器地址,因为没有 Internet (DNS) 连接。这可能会发生,例如。因为移动数据传输被禁用(在设备端或运营商端)或连接设置 (APN) 不正确。

    【讨论】:

    • 谢谢,但当设备开启移动数据时,我确实检查了 Google 地图和 Chrome 应用程序是否正常工作。所以该设备具有互联网连接。我还能尝试什么,也许是某种形式的等待或重试机制?
    猜你喜欢
    • 2013-05-24
    • 2017-11-23
    • 2012-01-31
    • 1970-01-01
    • 2012-09-30
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多