100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 使用 Apache 工具类 HttpClients 进行 GET POST请求

使用 Apache 工具类 HttpClients 进行 GET POST请求

时间:2018-11-27 16:51:36

相关推荐

使用 Apache 工具类 HttpClients 进行 GET POST请求

使用 Apache 工具类 HttpClients 进行 GET、POST请求

一、概述

在Java中进行 HTTP 请求是一种常见的编程需求,尤其是在调用第三方API的时候。因此,了解 HTTP 协议的原理、熟悉Apache工具类对此协议的实现至关重要。(更好的阅读体验,请移步我的个人博客)

HTTP 协议属于应用层协议,同属于应用层协议的还有DNS、FTP等协议。HTTP 是基于TCP的可靠传输协议,采用的是客户端/服务器的(C/S)的工作方式,在 HTTP 的通信过程中,首先由客户端向服务器发起建立链接的请求,通过 TCP三次握手来完成,然后客户端向服务器发出请求,告诉服务器想得到的信息。服务器通过响应返回客户端需要的信息。最后通过 TCP 四次握手关闭链接,从而完成一次基本的通信过程。

由于客户端与服务器有不同的数据交换需求,为了更高效的进行数据交换,HTTP 协议定义了多种不同的请求方法,服务器可以针对不同的请求方式进行优化,从而提高客户端的响应速度和服务器的性能。常见的请求方式有GET, POST, PUT, DELETE等。当需要查询和获取服务器资源时,一般使用GET请求;当需要向服务器提交大量表单数据时,POST则更为常用。

HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。熟悉HttpClient 工具类对我们的项目开发非常的有帮助。

二、程序代码示例

2.1 POST 请求

/** POST请求* 参数是:URL,jsonObject(请求参数封装成json对象)* * */public static String post(String url,JSONObject jsonObject) {//创建HttpClients对象CloseableHttpClient httpClient = HttpClients.createDefault();//创建post请求对象HttpPost httpPost = new HttpPost(url);//创建封装请求参数对象,设置post请求参数StringEntity myEntity = new StringEntity(jsonObject.toJSONString(), ContentType.APPLICATION_JSON);httpPost.setEntity(myEntity);try {//执行POST请求,获取请求结果HttpResponse httpResponse = httpClient.execute(httpPost);if (httpResponse.getStatusLine().getStatusCode() == 200) {// 发送成功String resutlEntity = EntityUtils.toString(httpResponse.getEntity());return resutlEntity;} else {// 发送失败return null;}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {try {if (httpClient != null) {// 释放资源httpClient.close();}} catch (IOException e) {e.printStackTrace();}}return null;}

2.1 GET 请求

/** GET请求,如果有请求参数,则拼接到到url后面* */public static String get(String url) {//创建HttpClients对象CloseableHttpClient httpClient = HttpClients.createDefault();//创建get请求对象HttpGet httpGet = new HttpGet(url);//设置请求配置参数RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(5000).setConnectionRequestTimeout(5000).setRedirectsEnabled(true).build();httpGet.setConfig(config);try {//执行get请求HttpResponse response = httpClient.execute(httpGet);//获取返回结果if (response.getStatusLine().getStatusCode() == 200) {// 发送成功String resutlEntity = EntityUtils.toString(response.getEntity());return resutlEntity;} else {// 发送失败return null;}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {try {if (httpClient != null) {// 释放资源httpClient.close();}} catch (IOException e) {e.printStackTrace();}}return null;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。