安卓HTTP连接

18

有人能告诉我为什么这在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异常

谢谢

2个回答

32

就配置而言,你的应用程序要访问互联网,唯一需要的设置是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文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接