
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(MapparamMap, 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请求 HashMaphashMap = 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)); HashMapresultMap = 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 MapgetReturnMap(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; }}
发表评论
最新留言
很好
[***.229.124.182]2025年04月27日 15时06分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Linux top 命令详解
2023-02-01
Linux tr命令学习笔记与应用举例
2023-02-01
Linux Ubuntu 装LAMP心得
2023-02-01
linux Ubuntu安装ftp并将本地文件上传到云服务器
2023-02-01
linux udev 自动挂载 SD卡/U盘
2023-02-01
Linux UDP C/S例子
2023-02-01
Linux uniq学习笔记
2023-02-01
Linux unit14
2023-02-01
Linux VFS中write系统调用实现原理【转】
2023-02-01
Linux VI command
2023-02-01
linux vim 插件
2023-02-01
Linux vim 操作大集合,Linux运维工程师收藏!
2023-02-01
Linux vim编辑器
2023-02-01
LINUX weblogic集群搭建- 03启动脚本的控制
2023-02-01
Linux wget 下载 文件到指定目录
2023-02-01
linux who命令实现,用标准IO实现linux的who命令
2023-02-01
Linux xfs和ext4的区别
2023-02-01
Linux yum-config-manager命令找不到的解决方法
2023-02-01
linux yum命令详解
2023-02-01