httpclient post请求中使用basic auth认证

在一次项目中,有一个功能必须使用post请求并且还要basic auth认证。于是就找有关文章,然后找到了一篇比较易懂的文章,但是该文章没有设置请求头的功能于是我在原有的基础上添加了设置请求头的共能。原文链接

public static String doPost(String url, String username, String password, Map<String, Object> params, Map<String, Object> headers) {
        // 转换请求参数

        String jsonPrarms = JSON.toJSONString(params);
        CloseableHttpClient httpClient = HttpClientBuilder.create().build();   //获取浏览器信息
        HttpPost httpPost = new HttpPost(url);
        String encoding = null;  //username  password 自行修改  中间":"不可少
        try {
            encoding = DatatypeConverter.printBase64Binary((username+":"+password).getBytes("UTF-8"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        httpPost.setHeader("Authorization", "Basic " + encoding);
        // 设置请求头

        if (headers != null) {
            for (Map.Entry<String, Object> param : headers.entrySet()) {
                httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));
            }
        }
        HttpEntity entityParam = new StringEntity(jsonPrarms, ContentType.create("application/json", "UTF-8"));  //这里的“application/json” 可以更换因为本人是传的json参数所以用的这个
        httpPost.setEntity(entityParam);     //把参数添加到post请求
        HttpResponse response = null;
        try {
            response = httpClient.execute(httpPost);
        } catch (IOException e) {
            e.printStackTrace();
        }
        StatusLine statusLine = response.getStatusLine();   //获取请求对象中的响应行对象
        int responseCode = statusLine.getStatusCode();
        String entity = null;
        if ((responseCode >= 200 && responseCode < 300) || responseCode == 409) {
            //获取响应信息
            try {
                entity = EntityUtils.toString(response.getEntity(), "UTF-8");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return entity.toString();
    }

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值