http请求post,参数为form-data类型
这种方法主要调用接口参数定义为@RequestParam 的post请求调用。
1.在pom文件是添加引用
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.9</version> </dependency> <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>com.github.pjfanning</groupId> <artifactId>xmlbeans</artifactId> <version>2.6.5</version> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>3.6.0</version> </dependency> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency>
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.5.9</version> </dependency>
2. 编写请求代码
public class HttpTextUtils { public static Logger logger= LoggerFactory.getLogger(HttpTextUtils.class) ; /** * POST 请求 * * @param url 目标地址 * @param params 请求体 * @return */ public static String doPost(String url, JSONObject params) { HttpPost httpPost = new HttpPost(url); CloseableHttpClient client = HttpClients.createDefault(); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addTextBody("params", params.toString(), ContentType.create("multipart/form-data","utf-8")); HttpEntity multipart = builder.build(); HttpResponse resp = null; try { httpPost.setEntity(multipart); resp = client.execute(httpPost); String respnseContent = analysisResopnseContent(resp, HttpStatus.SC_OK); logger.info(url+":输入参数"+params.toJSONString(),"输出参数"+respnseContent); return respnseContent; //注意,返回的结果的状态码是302,非200 } catch (Exception e) { logger.info(e.getMessage()); } return null; } private static String analysisResopnseContent(HttpResponse response, int expectResponseStatus) throws IOException{ String resopnseContent = null; if (response.getStatusLine().getStatusCode() == expectResponseStatus) { HttpEntity responseEntity = response.getEntity(); resopnseContent = EntityUtils.toString(responseEntity, "utf-8"); }else{ return null; } return resopnseContent; } }
3.调用
String url = "http://localhost:8080/rest/getUser"; JSONObject obj=new JSONObject(); obj.put("deptName","人事部"); obj.put("handleTime",DateFormatUtil.format_yyyy_MM_dd_HH_mm_ss(new Date())); obj.put("name","ll");
String result=HttpTextUtils.doPost(url,obj);