[英]How to send json data from android app and receive it in rest web service running in jersey?
[英]Connecting to Jersey REST Web Service from Android
我创建了简单的REST Web服务,该服务从客户端获取三个字符串并将其保存到数据库中。 从Java客户端应用程序可以正常工作。
现在,我想在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();
}
}
我找到了解决方案,但是大多数类都已弃用。 目前工作正常,将尝试找到更好的解决方案并将其发布在此处。
Looper.prepare();
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(),
10000);
HttpResponse response;
JSONObject obj = new JSONObject();
String timey = DateFormat.getDateTimeInstance().format(new Date());
try {
HttpPost post = new HttpPost(SERVICE_URL);
obj.put("lon", longitude);
obj.put("lat", latitude);
obj.put("dateTime", timey);
StringEntity se = new StringEntity(obj.toString());
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE,
"application/json"));
post.setEntity(se);
response = client.execute(post);
if (response != null) {
InputStream in = response.getEntity().getContent();
}
} catch (Exception e) {
e.printStackTrace();
}
Looper.loop();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.