1
我创建了简单的REST Web服务,它从客户端获取三个字符串并将它们保存到数据库。它从Java客户端应用程序运行良好。从Android连接到Jersey REST Web服务
现在,我想从Android设备上做同样的事情。从我的设备连接到服务并执行相同操作的最佳方式是什么?
我是新来的Android,在网上搜索了很多,只是找不到足够简单的东西来了解如何去做。希望有人能帮助。
RESTLocationService.java:
@Path("/data")
public class RESTLocationService {
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
public Response createDataInJSON(JSONObject data) throws JSONException {
String lon = data.getString("lon");
String lat = data.getString("lat");
String dateTime = data.getString("dateTime");
String location = "Longitude: " + lon + ", latitude: " + lat
+ ", time: " + dateTime + ".";
DataHiber dataHiber = new DataHiber(lon, lat, dateTime);
DBUtils.saveLocations(dataHiber);
return Response.status(201).entity(location).build();
}
}
RESTLocationClient.java:
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Client client = Client.create();
WebResource webResource = client
.resource("http://192.168.111.77:8080/TebLocationService/rest/data/post");
String longy = "46.8888778877";
String latty = "12.9485495894859";
String timey = "29/03/2015 14:03";
JSONObject obj = new JSONObject();
obj.put("lon", longy);
obj.put("lat", latty);
obj.put("dateTime", timey);
ClientResponse response = webResource.type("application/json")
.post(ClientResponse.class, obj);
if (response.getStatus() != 201) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatus());
}
System.out.println("Output from Server .... \n");
String output = response.getEntity(String.class);
System.out.println(output);
} catch (Exception e) {
e.printStackTrace();
}
}
额外的罐子会增加应用程序的大小,您可以使用Java HTTP URL连接类 – 2015-03-31 08:17:35
额外的罐子一样,做同样喜欢我在Java应用程序那样轻松地调用REST服务?试过了,事情变得非常复杂,我放弃了,我正在寻找更好的解决方案。 将尝试与HTTP URL连接,是的,只是为了弄清楚如何做到这一点。 – Tinmar 2015-03-31 08:23:29
Android SDK没有JDK中提供的所有类,因此您不能指望第三方jar在android上工作,除非它们不兼容,因此我建议使用Android SDK中提供的标准类,而不是使用Java应用程序罐。 HttpURLConnection是非常comman类和数以千计的网上可用的例子。 – 2015-03-31 09:03:08