1、jar包坐标
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.6</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version> </dependency>
2、post请求工具类
package com.csc.utils; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import java.io.IOException; import java.text.ParseException; import java.util.ArrayList; import java.util.List; import java.util.Map; public class HttpTookit{ /** * 模拟请求 * * @param url 资源地址 * @param map 参数列表 * @param encoding 编码 * @return * @throws ParseException * @throws IOException */ public static String doPost(String url, Map<String,String> map, String encoding) throws ParseException, IOException { String body = ""; //创建httpclient对象 CloseableHttpClient client = HttpClients.createDefault(); //创建post方式请求对象 HttpPost httpPost = new HttpPost(url); //装填参数 List<NameValuePair> nvps = new ArrayList<NameValuePair>(); if(map!=null){ for (Map.Entry<String, String> entry : map.entrySet()) { nvps.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); } } //设置参数到请求对象中 httpPost.setEntity(new UrlEncodedFormEntity(nvps, encoding)); System.out.println("请求地址:"+url); System.out.println("请求参数:"+nvps.toString()); //设置header信息 //指定报文头【Content-type】、【User-Agent】 httpPost.setHeader("Content-type", "application/x-www-form-urlencoded"); httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); //执行请求操作,并拿到结果(同步阻塞) CloseableHttpResponse response = client.execute(httpPost); //获取结果实体 HttpEntity entity = response.getEntity(); if (entity != null) { //按指定编码转换结果实体为String类型 body = EntityUtils.toString(entity, encoding); } EntityUtils.consume(entity); //释放链接 response.close(); return body; } }
3、调用实例
package com.csc.controller; import com.csc.utils.HttpTookit; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.text.ParseException; import java.util.HashMap; import java.util.Map; @Controller @RequestMapping("/msgapi") public class UserController { @ResponseBody @RequestMapping(value = "/bothway",method = {RequestMethod.POST}) public String bothway(@RequestBody Map<String,Object> map) throws IOException, ParseException { String uname = (String) map.get("uname");//用户名 String token = (String) map.get("token");//用户密码 String showcaller = (String) map.get("showcaller");//显示号码(接入号) String from = (String) map.get("from");//主叫 String to = (String) map.get("to");//被叫 Map paramMap = new HashMap(); paramMap.put("uname", uname); paramMap.put("token", token); paramMap.put("showcaller", showcaller); paramMap.put("to", to); paramMap.put("from", from); String url = "http://zxjt.weiyingjia.org/msgapi/bothway"; String result = HttpTookit.doPost(url, paramMap,"utf-8"); System.out.print(result); return result; } }