Android客户端与Jboss服务器通信

3

我的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。(ipconfig) 问题出在哪里?

这是在我进行了建议的更改之后发生的(即在android manifest.xml中给予了互联网权限,并将url更改为'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服务器仍然没有响应。仿真器和jboss服务器之间似乎没有建立连接。

你在清单文件中添加了网络权限吗? - kosa
<uses-permission android:name="android.permission.INTERNET" /> - kosa
请参考此链接:http://developer.android.com/resources/samples/SampleSyncAdapter/AndroidManifest.html - kosa
1个回答

2
假设您的JBoss服务器正在与模拟器运行在同一台PC上,这里有几件事情可以检查:
首先,请确保您在AndroidManifest.xml中设置了Internet权限,如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");

具体详情请点击这里。简而言之,假设您的 JBoss 服务于您的开发计算机上的 localhost(即服务于 127.0.0.1),则您的模拟器应该能够通过此特殊 IP 地址连接。


我只在我的android.xml文件中添加了网络权限。我已将权限设置为包括互联网权限。但在运行时,出现以下异常。ActivityManager:java.lang.SecurityException:权限拒绝:从null(pid=-1,uid=-1)启动意图{act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] flg = 0x10000000 cmp = com.epramaan/ .EpramaanActivity}需要android.permission.INTERNET。 - Ashwin
请查看我的第二次编辑。现在没有例外。但是JBoss服务器仍然没有响应。 - Ashwin
@user1139023 你的 JBoss 服务器是在 127.0.0.1 还是 192.168.56.1 上提供服务?如果是后者,是否已经打开了正确的防火墙端口?你能否从另一台电脑连接到它?(只是为了确认它是否存活) - Marvin Pinto
JBoss正在127.0.0.1上提供服务。 - Ashwin
终于搞定了。在使用URL连接进行测试时,我没有从服务器返回任何值。我只是打印了从Android客户端发送的值。谢谢。 - Ashwin

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