Httpclient技术

在后端开发过程中,后端服务不一定部署在一台服务器上,所以我们需要一种技术可以实现后端调用其他后端的服务,这种调用被称为RPC(远程过程调用),如下图所示:
这里写图片描述
HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。拥有以下几个主要功能:

  •  实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
  •  支持自动转向
  •  支持 HTTPS 协议
  •  支持代理服务器等
    通过使用Httpclient可以实现以下过程:
    这里写图片描述
    根据Httpclient的使用方法,先创建Httpclient的实例,通过连接地址创建连接方式(GET、POST等)的实例,执行创建好的实例接收返回值,处理好返回值后释放连接。

    核心代码(JSON格式):

//GET
    public static String DoGet(String url){
        //设置连接配置
        RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(5000)
                .setSocketTimeout(5000).setConnectionRequestTimeout(5000).build();
        //创建HttpClient实例
        HttpClient httpClient = HttpClientBuilder.create().build();
        //创建GET的连接方式实例
        HttpGet httpGet = new HttpGet(url);
        //配置请求头
        httpGet.addHeader("content-type", "application/json");
        httpGet.addHeader("Accept", "application/json");
        httpGet.setConfig(requestConfig);
        try{
            //接收响应信息
            HttpResponse httpResponse = httpClient.execute(httpGet);
            //如果响应信息正确返回响应体信息
            if(httpResponse.getStatusLine().getStatusCode() == 200){
                return EntityUtils.toString(httpResponse.getEntity());
            }else {
                return "{\"message\":\"请求失败\"}";
            }
        }catch (IOException e){
            return "{\"message\":\"IOException异常\"}";
        }finally {
            //释放连接
            httpGet.releaseConnection();
        }
    }
//POST
    public static String DoPost(String url, Chain chain){
        //设置连接配置
        RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(5000)
                .setSocketTimeout(5000).setConnectionRequestTimeout(5000).build();
        //创建HttpClient实例
        HttpClient httpClient = HttpClientBuilder.create().build();
        //创建POST的连接方式实例
        HttpPost httpPost = new HttpPost(url);
        //配置请求头
        httpPost.addHeader("content-type", "application/json");
        httpPost.addHeader("Accept", "application/json");
        httpPost.setConfig(requestConfig);
        try{
            //添加请求题信息
            String jsonString = JSON.toJSONString(chain);
            System.out.println(jsonString);
            StringEntity entity = new StringEntity(jsonString);
            httpPost.setEntity(entity);
            //接收响应信息
            HttpResponse httpResponse = httpClient.execute(httpPost);
            //如果响应信息正确返回响应体信息
            if(httpResponse.getStatusLine().getStatusCode() == 200){
                return EntityUtils.toString(httpResponse.getEntity());
            }else {
                return "{\"message\":\"请求失败\"}";
            }
        }catch (IOException e){
            return "{\"message\":\"IOException异常\"}";
        }finally {
            //释放连接
            httpPost.releaseConnection();
        }
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值