繁体   English   中英

从Android连接到Jersey REST Web服务

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM