// maven jar包
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.10</version>
</dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.6</version></dependency>
// An highlighted block
package com.datacvgmon;import com.alibaba.fastjson.JSON;
import org.apache.http.HttpEntity;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.hods.CloseableHttpResponse;
import org.apache.hods.HttpPost;
import org.ity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
** 测试案例
**/
public class Http {public static void main(String[] args) {// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)CloseableHttpClient httpClient = ate().build();// 创建Post请求 HttpPost httpPost = new HttpPost("127.0.0.1:18080/role/selectRole");Map<String, String> map=new HashMap<>();map.put("roleId","7384c18e6549485cb5a9db0ab2fb1b62");// 我这里利用阿里的fastjson,将Object转换为json字符串;// (需要导入com.alibaba.fastjson.JSON包)String jsonString = JSONString(map);StringEntity entity = new StringEntity(jsonString, "UTF-8");// post请求是将参数放在请求体里面传过去的;这里将entity放入post请求体中httpPost.setEntity(entity);httpPost.setHeader("Content-Type", "application/json;charset=utf8");// 响应模型CloseableHttpResponse response = null;try {// 由客户端执行(发送)Post请求response = ute(httpPost);// 从响应模型中获取响应实体HttpEntity responseEntity = Entity();System.out.println("响应状态为:" + StatusLine());if (responseEntity != null) {System.out.println("响应内容长度为:" + ContentLength());System.out.println("响应内容为:" + String(responseEntity));}} catch (ClientProtocolException e) {e.printStackTrace();} catch (ParseException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {// 释放资源if (httpClient != null) {httpClient.close();}if (response != null) {response.close();}} catch (IOException e) {e.printStackTrace();}}}}
// 测试实例调用的接口@RequestMapping(value = "/selectRole",method = RequestMethod.POST)public HandleResultDTO getRoleById(@RequestBody Map<String,Object> jsonParams) {RoleById(jsonParams);}
// 工具类
package com.datacvgmon;import com.alibaba.fastjson.JSON;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CredentialsProvider;
import org.apache.fig.RequestConfig;
import org.apache.hods.*;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.client.utils.URIBuilder;
import org.ity.StringEntity;
import org.apache.http.impl.client.*;
import org.apache.http.params.CoreConnectionPNames;
import org.apache.http.util.EntityUtils;import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;/***httpClient工具类*/
public class HttpClientUtils {/*** <pre>* 方法体说明:向远程接口发起请求,返回字符串类型结果* @param url 接口地址* @param requestMethod 请求类型* @param params 传递参数* @return String 返回结果* </pre>*/public static String httpRequestToString(String url, String requestMethod,Map<String, String> params, String ...auth){//接口返回结果String methodResult = null;try {String parameters = "";boolean hasParams = false;//将参数集合拼接成特定格式,如name=zhangsan&age=24for(String key : params.keySet()){String value = (key), "UTF-8");parameters += key +"="+ value +"&";hasParams = true;}if(hasParams){parameters = parameters.substring(0, parameters.length()-1);}//是否为GET方式请求boolean isGet = "get".equalsIgnoreCase(requestMethod);boolean isPost = "post".equalsIgnoreCase(requestMethod);boolean isPut = "put".equalsIgnoreCase(requestMethod);boolean isDelete = "delete".equalsIgnoreCase(requestMethod);//创建HttpClient连接对象DefaultHttpClient client = new DefaultHttpClient();HttpRequestBase method = null;if(isGet){url += "?" + parameters;method = new HttpGet(url);}else if(isPost){method = new HttpPost(url);HttpPost postMethod = (HttpPost) method;StringEntity entity = new StringEntity(parameters);postMethod.setEntity(entity);}else if(isPut){method = new HttpPut(url);HttpPut putMethod = (HttpPut) method;StringEntity entity = new StringEntity(parameters);putMethod.setEntity(entity);}else if(isDelete){url += "?" + parameters;method = new HttpDelete(url);}Params().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 6000);//设置参数内容类型method.addHeader("Content-Type","application/x-www-form-urlencoded");//httpClient本地上下文HttpClientContext context = null;if(!(auth==null || auth.length==0)){String username = auth[0];String password = auth[1];UsernamePasswordCredentials credt = new UsernamePasswordCredentials(username,password);//凭据提供器CredentialsProvider provider = new BasicCredentialsProvider();//凭据的匹配范围provider.setCredentials(AuthScope.ANY, credt);context = ate();context.setCredentialsProvider(provider);}//访问接口,返回状态码HttpResponse response = ute(method, context);//返回状态码200,则访问接口成功StatusLine().getStatusCode()==200){methodResult = Entity());}client.close();}catch (UnsupportedEncodingException e) {e.printStackTrace();}catch (IOException e) {e.printStackTrace();}return methodResult;}public void doPostTestTwo() {// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)CloseableHttpClient httpClient = ate().build();// 创建Post请求HttpPost httpPost = new HttpPost("127.0.0.1:18080/role/selectRole");Map<String, String> map=new HashMap<>();map.put("roleId","7384c18e6549485cb5a9db0ab2fb1b62");// 我这里利用阿里的fastjson,将Object转换为json字符串;// (需要导入com.alibaba.fastjson.JSON包)String jsonString = JSONString(map);StringEntity entity = new StringEntity(jsonString, "UTF-8");// post请求是将参数放在请求体里面传过去的;这里将entity放入post请求体中httpPost.setEntity(entity);httpPost.setHeader("Content-Type", "application/json;charset=utf8");// 响应模型CloseableHttpResponse response = null;try {// 由客户端执行(发送)Post请求response = ute(httpPost);// 从响应模型中获取响应实体HttpEntity responseEntity = Entity();System.out.println("响应状态为:" + StatusLine());if (responseEntity != null) {System.out.println("响应内容长度为:" + ContentLength());System.out.println("响应内容为:" + String(responseEntity));}} catch (ClientProtocolException e) {e.printStackTrace();} catch (ParseException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {// 释放资源if (httpClient != null) {httpClient.close();}if (response != null) {response.close();}} catch (IOException e) {e.printStackTrace();}}}}
本文发布于:2024-01-28 01:09:53,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063753993752.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |