java.net.UnknowHostException:无法解析主机...没有与主机名关联的地址

时间:2016-02-15 17:48:58

标签: android inetaddress

当我在我的Android应用程序上尝试通过主机名获取ip时,我遇到了一个奇怪的错误。

IO上的类似问题会返回结果whitout问题,但我的app android不会返回任何内容。

我创建这些功能来测试我的应用程序:

public static String resolveIpByName(String url) {

    String result = url;

    InetAddress ia;
    try {
        Log.i("resolveIpByName 000", result);
        ia = InetAddress.getByName(url);
        result = ia.getHostAddress();
        Log.i("resolveIpByName 001", result);
    } catch (UnknownHostException e) {
        e.printStackTrace();
    }

    return result;
}

public static String resolveNameByIp(String ip) {

    String result = ip;

    InetAddress ia;
    try {
        Log.i("resolveNameByIp 000", result);
        ia = InetAddress.getByName(ip);
        result = ia.getCanonicalHostName();
        Log.i("resolveNameByIp 001", result);
    } catch (UnknownHostException e) {
        e.printStackTrace();
    }

    return result;
}

...我在新线程中运行此代码,因为这些代码在主线程内部不起作用。他们需要从困境开始。

我的应用在Manifest中具有以下权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- uses-permission android:name="android.permission.FLASHLIGHT" / -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />

...也就是说,我拥有正确执行代码的必要权限。

但是,如果我搜索自己的托管服务器,那么在IO上的类似代码会返回一个有效的结果,但是当在android上搜索同一页面或服务器时,结果会导致我无法解析主机&#34;警告。

我无法在此处输入我的主机名地址,但它有点像这样: mycompany.synology.me,或www.mycompany.synology.me。

我尝试通过ClientSocket或HttpURLConnection连接,并在使用其他功能获取我的IP地址后,但结果相似。

如果有人有意识形态,请发布在这里。

1 个答案:

答案 0 :(得分:0)

真的很奇怪。

这个错误不是代码错误,但似乎是api编译错误。

因为什么?

我简单清理所有项目和库代码,重启我的移动设备,重建我的项目并执行调试,现在应用程序完美运行!

记住注意:当出现奇怪的错误时,每次尝试清除并重建项目。愿这解决问题。