HTTPClient get/post请求实现
发布日期:2021-05-25 12:03:39 浏览次数:23 分类:精选文章

本文共 10857 字,大约阅读时间需要 36 分钟。

JAR包依赖

本项目依赖以下JAR包:

JAR包ID 组织ID JAR包名 版本
commons-beanutils commons-beanutils commons-beanutils 1.9.3
commons-collections commons-collections commons-collections 3.2.1
commons-lang commons-lang commons-lang 2.6
commons-logging commons-logging commons-logging 1.2
ezmorph net.sf.ezmorph ezmorph 1.0.6
httpclient org.apache.httpcomponents httpclient 4.5.2
httpcore org.apache.httpcomponents httpcore 4.4.10
json-lib net.sf.json-lib json-lib 2.4
jdk15 - - -

工具类

import net.sf.json.JSONObject;import org.apache.http.HttpEntity;import org.apache.http.HttpStatus;import org.apache.http.NameValuePair;import org.apache.http.client.methods.HTTPGet;import org.apache.http.client.methods.HTTPPost;import org.apache.http.client.utils.URLEncodedUtils;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.message.BasicNameValuePair;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.URI;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.Set;/** * @Author: Administrator * @Description: 调用HTTP请求 * @Date: 2019-09-03 10:36 */public class HttpclientUtil {    /***     * post请求     * @param json 请求参数     * @param url 请求地址     * @return 结果     */    public static String post(JSONObject json, String url) {        String result = "";        HttpPost post = new HttpPost(url);        try {            CloseableHttpClient httpClient = HttpClients.createDefault();            post.setHeader("Content-Type", "application/json;charset=utf-8");            post.addHeader("Authorization", "Basic YWRtaW46");            StringEntity postingString = new StringEntity(json.toString(), "utf-8");            post.setEntity(postingString);            HttpResponse response = httpClient.execute(post);            InputStream in = response.getEntity().getContent();            BufferedReader br = new BufferedReader(new InputStreamReader(in, "utf-8"));            StringBuilder strber = new StringBuilder();            String line = null;            while ((line = br.readLine()) != null) {                strber.append(line + '\n');            }            br.close();            in.close();            result = strber.toString();            if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {                result = "服务器异常";            }        } catch (Exception e) {            System.out.println("请求异常");            e.printStackTrace();            throw new RuntimeException(e);        } finally {            post.abort();        }        return result;    }    /***     * get无参请求     * @param url 请求地址     * @return 结果     */    public static String getHttp(String url) {        String result = "";        HttpGet get = new HttpGet(url);        try {            CloseableHttpClient httpClient = HttpClients.createDefault();            HttpResponse response = httpClient.execute(get);            result = getHttpEntityContent(response);            if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {                result = "服务器异常";            }        } catch (Exception e) {            System.out.println("请求异常");            throw new RuntimeException(e);        } finally {            get.abort();        }        return result;    }    /***     * get有参请求     * @param paramMap 请求参数     * @param url 请求地址     * @return 结果     */    public static String get(Map
paramMap, String url) { String result = ""; HttpGet get = new HttpGet(url); try { CloseableHttpClient httpClient = HttpClients.createDefault(); List
params = setHttpParams(paramMap); String param = URLEncodedUtils.format(params, "UTF-8"); get.setURI(URI.create(url + "?" + param)); HttpResponse response = httpClient.execute(get); result = getHttpEntityContent(response); if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) { result = "服务器异常"; } } catch (Exception e) { System.out.println("请求异常"); throw new RuntimeException(e); } finally { get.abort(); } return result; } /*** * 拼接请求参数 * @param paramMap 请求参数 * @return 拼接后的请求参数列表 */ public static List
setHttpParams(Map
paramMap) { List
params = new ArrayList<>(); for (Map.Entry
entry : paramMap.entrySet()) { params.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); } return params; } /** * 获取HTTP实体内容 * @param response HTTP响应 * @return 实体内容字符串 * @throws UnsupportedOperationException * @throws IOException */ public static String getHttpEntityContent(HttpResponse response) throws UnsupportedOperationException, IOException { String result = ""; HttpEntity entity = response.getEntity(); if (entity != null) { InputStream in = entity.getContent(); BufferedReader br = new BufferedReader(new InputStreamReader(in, "utf-8")); StringBuilder strber = new StringBuilder(); String line = null; while ((line = br.readLine()) != null) { strber.append(line + '\n'); } br.close(); in.close(); result = strber.toString(); } return result; }}

测试类

import net.sf.json.JSONObject;import java.util.HashMap;/** * @Author: Administrator * @Description: 测试HTTP请求 * @Date: 2019-09-03 11:15 */public class HttpClientTest {    public static void main(String[] args) {        // 测试无参GET请求        String result1 = HttpclientUtil.getHttp("http://localhost:8080/web/testController/getHttp");        System.out.println("[测试无参GET请求] 返回的结果为:" + result1);        // 测试有参GET请求        HashMap
hashMap = new HashMap<>(); hashMap.put("phone", "123456789"); String result2 = HttpclientUtil.get(hashMap, "http://localhost:8080/web/testController/testHttp"); System.out.println("[测试有参GET请求] 返回的结果为:" + result2); // 测试有参POST请求 JSONObject jsonObject = new JSONObject(); jsonObject.put("phone", "987654321"); String result3 = HttpclientUtil.post(jsonObject, "http://localhost:8080/web/testController/testHttpPost"); System.out.println("[测试有参POST请求] 返回的结果为:" + result3); }}

Controller接口类

import java.util.HashMap;import javax.servlet.http.HttpServletRequest;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import com.alibaba.fastjson.JSONObject;/** * 测试Controller * @author Administrator */@RequestMapping("/testController")@Controllerpublic class TestController {    private static final Logger logger = LoggerFactory.getLogger(TestController.class);    /**     * 测试GET无参请求     */    @RequestMapping("/getHttp")    @ResponseBody    public String getHttp() {        logger.info("调用无参请求成功");        return "Hello World!";    }    /**     * 测试GET有参请求     */    @RequestMapping("/testHttp")    @ResponseBody    public String testHttp(HttpServletRequest request) {        // 获取参数        logger.info("获取参数为:" + ControllerUtil.getParamMap(request));        HashMap
resultMap = new HashMap<>(); String phone = (String) ControllerUtil.getParamMap(request).get("phone"); if (phone.equals("123456789")) { resultMap.put("name", "张三"); resultMap.put("age", "25"); resultMap.put("profession", "JAVA"); } else { resultMap.put("name", "李四"); resultMap.put("age", "27"); resultMap.put("profession", "PYTHON"); } return JSONObject.toJSONString(resultMap); } /** * 测试POST有参请求 */ @RequestMapping(value = "/testHttpPost", method = {RequestMethod.POST}, produces = "application/json;charset=UTF-8") @ResponseBody public String testHttpPost(HttpServletRequest request) { // 获取参数 String phone = request.getParameter("phone"); // 获取参数 HashMap
resultMap = new HashMap<>(); if (phone.equals("123456789")) { resultMap.put("name", "张三"); resultMap.put("age", "25"); resultMap.put("profession", "JAVA"); } else { resultMap.put("name", "李四"); resultMap.put("age", "27"); resultMap.put("profession", "PYTHON"); } return JSONObject.toJSONString(resultMap); }}

前台参数拼接工具类

import java.util.Enumeration;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;import java.util.concurrent.ConcurrentHashMap;import javax.servlet.http.HttpServletRequest;import net.sf.json.JSONArray;/** * 参数拼接工具类 */public class ControllerUtil {    /**     * 拼装列表返回结果     * @param total 总数     * @param page 当前页     * @param pagesize 每页数量     * @param jsonResult JSON结果     * @return 拼装后的JSON结果     */    public static Map
getReturnMap(int total, String page, String pagesize, String jsonResult) { Map
map = new HashMap<>(); map.put("total", String.valueOf(total)); map.put("page", String.valueOf(Integer.parseInt(page) * Integer.parseInt(pagesize))); map.put("pagesize", pagesize); map.put("rows", JSONArray.fromObject(jsonResult)); return map; } /** * 拼装包含分页信息的JSON结果 * @param jsonResult JSON结果 * @return 拼装后的JSON结果 */ public static Map
getReturnMapWithFooter(String jsonResult) { Map
map = new ConcurrentHashMap<>(); map.put("rows", JSONArray.fromObject(jsonResult)); return map; } /** * 拼接查询参数 * @param request 请求对象 * @return 拼接后的参数Map */ public static HashMap
getParamMap(HttpServletRequest request) { HashMap
paramMap = new HashMap<>(); Enumeration
pNames = request.getParameterNames(); while (pNames.hasMoreElements()) { String name = (String) pNames.nextElement(); String value = request.getParameter(name); if (name.equals("page")) { value = String.valueOf(Integer.parseInt(value) * 10); } paramMap.put(name, value); } return paramMap; } /** * 拼接查询参数 * @param request 请求对象 * @return 拼接后的参数Map */ public static HashMap
getParamsMap(HttpServletRequest request) { String pageSize = request.getParameter("pagesize"); Enumeration
pNames = request.getParameterNames(); HashMap
paramMap = new HashMap<>(); while (pNames.hasMoreElements()) { String name = (String) pNames.nextElement(); String value = request.getParameter(name); if (name.equals("page")) { value = String.valueOf(Integer.parseInt(value) * Integer.parseInt(pageSize)); } paramMap.put(name, value); } return paramMap; }}
上一篇:Data too long for column 'respCode' at row 1
下一篇:导出xml格式文件

发表评论

最新留言

很好
[***.229.124.182]2025年04月27日 15时06分36秒