java get,post请求带多个header参数,亲测有效

传header多个参数的map对象,然后用setHeader方法遍历设置。

下列方法为get请求,post请求直接httpPost相同方法拼接请求头参数即可。

废话不多说,看代码。

/**
     * get请求(用于key-value格式的参数,且带有header请求头)
     * 
     * @param url
     * @param paramMap 请求的参数map键值对
     * @param headerMap header参数 map键值对
     * @return
     */
    public static JSONObject doGet(String url, Map paramMap, Map headerMap) {
        JSONObject jsonObject = null;
        // 获取连接客户端工具
        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response = null;
        try {
            /*
             * 由于GET请求的参数都是拼装在URL地址后方,所以我们要构建一个URL,带参数
             */
            URIBuilder uriBuilder = new URIBuilder(url);

            for (Map.Entry entry : paramMap.entrySet()) {
                uriBuilder.addParameter(entry.getKey(), entry.getValue());
            }

            //拼接请求头参数
            HttpGet httpGet = new HttpGet(uriBuilder.build());
            for (Map.Entry entry : headerMap.entrySet()) {
                httpGet.setHeader(entry.getKey(), entry.getValue());
            }
            // 执行请求
            response = httpClient.execute(httpGet);
            // 获得响应的实体对象
            HttpEntity entity = response.getEntity();
            // 使用Apache提供的工具类进行转换成字符串
            if (entity != null) {
                // 将返回结果处理成String对象
                String result = EntityUtils.toString(entity, "UTF-8");
                // 转换Json对象
                jsonObject = JSON.parseObject(result);
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 释放连接
            if (null != response) {
                try {
                    response.close();
                    httpClient.close();
                } catch (IOException e) {
                    System.err.println("释放连接出错");
                    e.printStackTrace();
                }
            }
        }
        return jsonObject;
    }

你可能感兴趣的:(java,http)