jav 通过HttpClient实现调用外部接口两种请求方式(get/post)

1、简介

HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

Http协议非常的重要,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性,它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。

 

2、使用方法

使用 HttpClient 需要以下 6 个步骤:

1. 创建 HttpClient 的实例

2. 创建某种连接方法的实例,在这里是GetMethod。在 GetMethod 的构造函数中传入待连接的地址

3. 调用第一步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例

4. 读 response

5. 释放连接。无论执行方法是否成功,都必须释放连接

6. 对得到后的内容进行处理

 

 

// get请求 以微信提供的获取access_token接口为例

 String result=null;
 String accessToken = null;
 // 设置url
 String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+WeiXinConfig.APPID+"&secret="+WeiXinConfig.SECRET;
 // 创建httpclient对象
 HttpClient client = HttpClients.createDefault();
// 创建get方式请求对象
 HttpGet get = new HttpGet(url);
 try {
     // 设置通用的请求属性,设置header信息
     get.addHeader("content-type", "application/json");
     // 获取相应数据,这里可以获取相应的数据
     HttpResponse res = client.execute(get);
     // 判断网络请求是否成功,成功的状态码200
     if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
         //拿到实体并返回json格式
         result = EntityUtils.toString(res.getEntity());
         JSONObject jsonObject = JSONObject.parseObject(result);
         accessToken=jsonObject.get("access_token").toString();
     }else{
         accessToken="获取access_token失败";
     }
 } catch (Exception e) {
     throw new RuntimeException(e);
 }finally {
     // 释放连接
     get.releaseConnection();
 }
 return accessToken;

 

// post请求

// 创建httpclient对象
HttpClient client = HttpClients.createDefault();
// 要调用的接口路径
String url = "XXXX";
// 声明请求的方式
HttpPost post = new HttpPost(url);
String result=null;
try {
    // 设置消息头
    // post请求时此处应设定参数的编码格式,不然传的参数中文会变乱码
    StringEntity s = new StringEntity(jsonObject.toString(),"UTF-8");
    s.setContentEncoding("UTF-8");
    s.setContentType("application/json");
    // 设置发送数据(数据尽量为json)
    post.setEntity(s);
    post.addHeader("content-type", "application/json");

    //获取相应数据,这里可以获取相应的数据
    HttpResponse res = client.execute(post);
    // 判断网络请求是否成功,成功的状态码200
    if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
        //拿到实体并返回json格式
         result = EntityUtils.toString(res.getEntity());
    }else{
        result="XXX";
    }
} catch (Exception e) {
    throw new RuntimeException(e);
}finally {
    //释放连接
    post.releaseConnection();
}
return result;

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值