Sử dụng Java console application để gọi Restful service


Tạo restful service như sau

rest

@Path("product")
public class Product {

    @Context
    private UriInfo context;

    /** Creates a new instance of Product */
    public Product() {
    }
    @GET
    @Path("/{id}")
    @Produces("application/json")
    public String getJson(@PathParam("id") int id, @QueryParam("name")String name) {
        try {
            JSONObject json = new JSONObject();
            json.put("id", id);
            json.put("name", name);

            return json.toString();
        } catch (Exception e) {
            return "";
        }
    }
    @POST
    @Produces("application/json")
    public String postJson(@FormParam("id") int id, @FormParam("name")String name) {
        try {
            JSONObject json = new JSONObject();
            json.put("id", id);
            json.put("name", name);

            return json.toString();
        } catch (Exception e) {
            return "";
        }
    }
}

Sử dụng thư viện Java kết nối và gọi dịch vụ

public class JavaApplication1 {

    public static void main(String[] args) {
        String address = "http://localhost:8080/WebApplication1/rest/product";

        postData(address);
        getData(address);
    }

    public static void getData(String address) {
        try {
            // cho nguoi dung nhap lieu
            System.out.print("Input id:");
            Scanner sn = new Scanner(System.in);
            address += "/" + URLEncoder.encode(sn.nextLine(),"UTF8");
            System.out.print("Input name:");
            address += "?name=" + URLEncoder.encode(sn.nextLine(),"UTF8");
            // goi yeu cau theo pp get
            URL url = new URL(address);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestProperty("Accept-Charset", "UTF-8");
            // nhan du lieu
            InputStream response = conn.getInputStream();
            // xu ly du lieu tra ve    
            StringBuilder sb = new StringBuilder();
            for (int c; (c = response.read()) >= 0;) {
                sb.append((char) c);
            }
            System.out.println("Recieve data with get method:" + sb.toString());

        } catch (Exception e) {
            System.out.println("Err:" + e.toString());
        }
    }

    public static void postData(String address) {
        try {
            // ket noi voi server
            URL url = new URL(address);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestProperty("Accept-Charset", "UTF-8");
            // tao cac tham so se goi len server
            Map<String, Object> params = new LinkedHashMap<String, Object>();
            System.out.print("Input id:");
            Scanner sn = new Scanner(System.in);
            params.put("id", sn.nextLine());
            System.out.print("Input name:");
            params.put("name", sn.nextLine());
            // ghep tham so    
            StringBuilder postData = new StringBuilder();
            for (Map.Entry<String, Object> param : params.entrySet()) {
                if (postData.length() != 0) {
                    postData.append('&');
                }
                postData.append(URLEncoder.encode(param.getKey(), "UTF-8"));
                postData.append('=');
                postData.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8"));
            }
            byte[] postDataBytes = postData.toString().getBytes("UTF-8");
            // ghi du lieu len server (submit)
            conn.setDoOutput(true);
            conn.getOutputStream().write(postDataBytes);
            // nhan du lieu
            InputStream response = conn.getInputStream();
            StringBuilder sb = new StringBuilder();
            for (int c; (c = response.read()) >= 0;) {
                sb.append((char) c);
            }
            System.out.println("Recieve data with post method:" + sb.toString());

        } catch (Exception e) {
            System.out.println("Err:" + e.toString());
        }
    }
}

Mã nguồn ==> ma nguon

Advertisements

One thought on “Sử dụng Java console application để gọi Restful service

Phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s