【问题标题】:Android HTTP ConnectionAndroid HTTP 连接
【发布时间】:2010-10-01 08:18:57
【问题描述】:

谁能告诉我为什么这在 Android 模拟器中不起作用?从浏览器我可以访问并且服务器是内部的。我能想到的只是我的应用缺少一些配置,因此它可以访问网络层。

try {
    InetAddress server = Inet4Address.getByName("thehost");
    //Doesn't work either
    //or InetAddress server2 = Inet4Address.getByAddress(new String("192.168.1.30").getBytes());

    if(server.isReachable(5000)){
        Log.d(TAG, "Ping!");
    }

    Socket clientsocket = new Socket(server, 8080);
} catch (UnknownHostException e) {
    Log.e(TAG, "Server Not Found");
} catch (IOException e) {
    Log.e(TAG, "Couldn't open socket");
}

抛出 UnknownHostException

谢谢

【问题讨论】:

    标签: java android sockets network-programming


    【解决方案1】:

    就配置而言,您需要从应用程序访问 Internet 的唯一设置是 INTERNET 权限,通过在应用程序清单中的应用程序标记外部添加以下行来启用。

    <uses-permission android:name="android.permission.INTERNET" />
    

    所以清单将遵循这个一般结构

    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.apis">    
      <uses-permission android:name="android.permission.INTERNET" />
      <application 
        android:name="MyApplication"    
        android:label="@string/application_title"
        android:icon="@drawable/my_icon">
        [ .. Your Activities go here ]
      </application>
    </manifest>
    

    【讨论】:

      【解决方案2】:

      由于超时,它可能仍然无法正常工作。由于您需要 root 权限才能发送 ICMP 包,并且 isReachable 的实现将使用慢速 TCP 版本的 ECHO。查看 javaDoc。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-22
        • 2013-09-06
        • 1970-01-01
        • 2018-03-10
        • 2016-04-24
        • 1970-01-01
        相关资源
        最近更新 更多