使用HttpClient发送一个最普通的POST请求,JSON格式数据请求
代码片段如下
try {
CloseableHttpClient client = HttpClients.createDefault();
JSONObject json = new JSONObject();
json.put("str", "字符串");
json.put("num", 123);
json.put("bool", true);
json.put("date", Calendar.getInstance().getTime());//日期类型的一般会约定会特定格式的字符串,这里仅是示例
json.put("ja", new JSONArray());
HttpUriRequest post = RequestBuilder.post("http://localhost:8181/auri")//
.setEntity(new StringEntity(json.toString(), ContentType.APPLICATION_JSON))//json的content-type已经包含utf-8的编码了
.build();
System.out.println(post.toString());
HttpResponse res = client.execute(post);
System.out.println("statusLine:" + res.getStatusLine().getStatusCode());
System.out.println(res.getEntity().getContentType().toString());
System.out.println(EntityUtils.toString(res.getEntity()));
} catch (Exception e) {
e.printStackTrace();
}
- 创建一个http请求客户端:HttpClients.createDefault(),用来实际发起调用http请求,可以类比成浏览器。
- 组装Json请求数据:通过JSONObject对象组装数据。
- 创建一个http请求:通过请求构造器RequestBuilder的post方法构造一个post请求,通过setEntity方法向post请求里放置请求参数,请求参数需要通过StringEntity对象包装,并指定content-type为json,通过build方法返回请求对象。
- 发起http请求并获得响应:通过请求客户端的execute方法执行请求并获得返回值请求响应。
- 获取响应结果:获取响应对象的实体HttpEntity,通过EntityUtils的toString方法将实体转成字符串,这里一般还要指定字符集,尤其是当返回的实体里没有指定字符集时。