Java 将Android应用程序连接到restful Web服务
我知道这个问题已经被问了很多次了,但是我找不到一个正确的答案,希望你们中的一个能帮我解决;-) 我正在尝试通过智能手机设备上的android应用程序与rest Web服务通信(因此没有模拟器)。 Web服务在windows计算机上的Java 将Android应用程序连接到restful Web服务,java,android,web-services,rest,tomcat,Java,Android,Web Services,Rest,Tomcat,我知道这个问题已经被问了很多次了,但是我找不到一个正确的答案,希望你们中的一个能帮我解决;-) 我正在尝试通过智能手机设备上的android应用程序与rest Web服务通信(因此没有模拟器)。 Web服务在windows计算机上的192.168.0.2:8080上运行。 该设备与电脑连接在同一wlan网络中。 当我用设备的chrome浏览器打开链接时,Web服务会正常响应 以下是我用于在异步任务中连接到Web服务的代码: protected Integer doInBackground
192.168.0.2:8080
上运行。
该设备与电脑连接在同一wlan网络中。
当我用设备的chrome浏览器打开链接时,Web服务会正常响应
以下是我用于在异步任务中连接到Web服务的代码:
protected Integer doInBackground(String... params)
{
try
{
AndroidHttpClient client = AndroidHttpClient.newInstance("androidClient", getContext());
HttpPost post = new HttpPost(params[0]);
String xml = new ScoreDto(new Random(System.currentTimeMillis()).nextLong()).toXml();
post.setEntity(new StringEntity(xml));
return client.execute(post).getStatusLine().getStatusCode();
}
catch (Exception e)
{
Log.e(TAG, e.getLocalizedMessage());
return 0;
}
}
- 我在尝试连接时使用了几种不同的方法,总是导致连接超时
- 我在我的应用程序中包含了互联网权限
- 我暂时停用了windows pc上的本地防火墙
- 我尝试了设备的端口转发
- 我尝试在app
中调用不同的Web服务,并得到了有效的响应httpbin.org/ip
提前感谢;-) 感谢所有发表评论试图提供帮助的人。
我发现了问题所在:
post请求缺少
内容类型标题
一个功能完备的doBackground
-实现如下所示:
protected Integer doInBackground(String... params)
{
try
{
//TODO check if params.length >=2 & not empty
AndroidHttpClient client = AndroidHttpClient.newInstance("androidClient", getContext());
HttpPost post = new HttpPost(params[0]);
post.setHeader("content-type", "application/xml");
post.setEntity(new StringEntity(params[1]));
return client.execute(post).getStatusLine().getStatusCode();
}
catch (Exception e)
{
Log.e(TAG, e.getLocalizedMessage());
return 0;
}
}
定义无法连接
如果您正在浏览器中“打开链接”,则这是一个GET请求。在您的代码中,您正在使用HttpPost
。只是出于好奇,但是您在代码中定义了服务器IP吗?@njzk2无法连接:连接没有被拒绝,但服务器没有respond@amol我也尝试了get请求,但服务器也没有响应。在restful Web服务中,post/get URL是相同的。