我的android客户端对部署在jboss上的servlet进行URL连接。但是当我在模拟器中运行客户端时,似乎没有建立连接。我的客户代码:
URL url = new URL("http://192.168.56.1:8080/hello");
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
ObjectOutputStream out=new ObjectOutputStream(connection.getOutputStream());
String s=new String("success");
out.writeObject(s);
out.flush();
out.close();
jboss中没有回复。 192.168.56.1是我的机器的IP地址。由于'localhost'将引用模拟器本身,我使用了192.168.56.1。(ipcofig) 有什么问题。
这是在我做出建议的更改之后(即在android manifest.xml中给出了互联网权限,并将网址更改为'http://10.0.2.2:8080/hello'以引用我的机器)。 但是当我运行我的应用程序(客户端)时,我仍然会遇到此异常:
ActivityManager: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.Client/.ClientActivity } from null (pid=-1, uid=-1) requires android.permission.INTERNET
现在它正在运作。我在清单标记中添加了Internet权限。之前我已将其添加到应用程序标记内。 参考我原来的问题,在做出所有建议的更改之后,仍然没有来自jboss服务器evene的响应。模拟器和jboss服务器之间似乎没有连接。
答案 0 :(得分:1)
假设你的JBoss服务器和你的模拟器在同一台PC上运行,这里 您可以检查一些事项:
首先,确保您拥有Internet
权限
AndroidManifest.xml
为
Thinksteep
指出:
<uses-permission android:name="android.permission.INTERNET" />
其次,尝试更改以下位置的IP地址:
URL url = new URL("http://192.168.56.1:8080/hello");
要:
URL url = new URL("http://10.0.2.2:8080/hello");
详情here。基本上这是假设您在开发机器上关闭了localhost
的JBoss服务(即服务127.0.0.1
),您的模拟器应该能够通过这个特殊的IP地址连接。