山西建设注册中心网站,网络营销和电子商务的区别和联系,聚美优品网站建设导向,手机 pc网站模板使用HttpClient发送请求、接收响应很简单#xff0c;一般需要如下几步即可:
1、创建HttpClient对象。
2、创建请求方法的实例#xff0c;并指定请求URL。如果需要发送GET请求#xff0c;
创建HttpGet对象#xff1b;如果需要发送POST请求#xff0c;创建HttpPost对象。
3…使用HttpClient发送请求、接收响应很简单一般需要如下几步即可:
1、创建HttpClient对象。
2、创建请求方法的实例并指定请求URL。如果需要发送GET请求
创建HttpGet对象如果需要发送POST请求创建HttpPost对象。
3、如果需要发送请求参数可调用HttpGet、HttpPost
共同的setParams(HttpParams params)方法来添加请求参数
对于HttpPost对象而言也可调用setEntity(HttpEntity entity)
方法来设置请求参数。
4、调用HttpClient对象的execute(HttpUriRequest request)
发送请求该方法返回一个HttpResponse。
5、调用HttpResponse的getAllHeaders()、getHeaders(String name)
等方法可获取服务器的响应头调用HttpResponse的getEntity()方法可获取HttpEntity对象
该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
6、释放连接。无论执行方法是否成功都必须释放连接引入依赖 !-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --dependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpclient/artifactIdversion4.5.13/version/dependency工具类
Slf4j
public class HttpUtils {public static String defaultEncoding utf-8;/*** 发送http post请求并返回响应实体** param url 请求地址* return url响应实体*/public static String postRequest(String url) {return postRequest(url, null, null);}/*** p方法名: postRequest/p* p描述: 发送httpPost请求/p** param url* param params* return*/public static String postRequest(String url, MapString, Object params) {return postRequest(url, null, params);}/*** 发送http post请求并返回响应实体** param url 访问的url* param headers 请求需要添加的请求头* param params 请求参数* return*/public static String postRequest(String url, MapString, String headers,MapString, Object params) {String result null;CloseableHttpClient httpClient buildHttpClient();HttpPost httpPost new HttpPost(url);if (null ! headers headers.size() 0) {for (EntryString, String entry : headers.entrySet()) {String key entry.getKey();String value entry.getValue();httpPost.addHeader(new BasicHeader(key, value));}}if(isJSON(params.toString())){/*** json格式*/StringEntity requestEntity new StringEntity(params.toString(), utf-8);requestEntity.setContentEncoding(UTF-8);httpPost.setHeader(Content-type, application/json);httpPost.setEntity(requestEntity);}else{/*** 名称值对节点类型*/if (null ! params params.size() 0) {ListNameValuePair pairList new ArrayListNameValuePair(params.size());for (Map.EntryString, Object entry : params.entrySet()) {NameValuePair pair new BasicNameValuePair(entry.getKey(), entry.getValue().toString());pairList.add(pair);}httpPost.setEntity(new UrlEncodedFormEntity(pairList, Charset.forName(defaultEncoding)));}}try {CloseableHttpResponse response httpClient.execute(httpPost);try {HttpEntity entity response.getEntity();if (entity ! null) {log.info(【POST请求信息】,请求地址:{},请求参数:{}, url, params);result EntityUtils.toString(entity, Charset.forName(defaultEncoding));log.info(【POST请求信息】,请求地址:{},请求参数:{},返回结果:{}, url, params,result);}} finally {response.close();}} catch (Exception ex) {ex.printStackTrace();} finally {try {httpClient.close();} catch (IOException e) {e.printStackTrace();}}return result;}/*** 发送http get请求** param url 请求url* return url返回内容*/public static String getRequest(String url) {return getRequest(url, null);}/*** 发送http get请求** param url 请求的url* param params 请求的参数* return*/public static String getRequest(String url, MapString, Object params) {return getRequest(url, null, params);}/*** 发送http get请求** param url 请求的url* param headersMap 请求头* param params 请求的参数* return*/public static String getRequest(String url, MapString, String headersMap, MapString, Object params) {String result null;CloseableHttpClient httpClient buildHttpClient();try {String apiUrl url;if (null ! params params.size() 0) {StringBuffer param new StringBuffer();int i 0;for (String key : params.keySet()) {if (i 0)param.append(?);elseparam.append();param.append(key).append().append(params.get(key));i;}apiUrl param;}HttpGet httpGet new HttpGet(apiUrl);if (null ! headersMap headersMap.size() 0) {for (EntryString, String entry : headersMap.entrySet()) {String key entry.getKey();String value entry.getValue();httpGet.addHeader(new BasicHeader(key, value));}}CloseableHttpResponse response httpClient.execute(httpGet);try {HttpEntity entity response.getEntity();if (null ! entity) {log.info(【GET请求信息】,请求地址:{},请求参数:{}, url, params);result EntityUtils.toString(entity, defaultEncoding);log.info(【GET请求信息】,请求地址:{},请求参数:{},返回结果:{}, url, params,result);}} finally {response.close();}} catch (ClientProtocolException e) {e.printStackTrace();} catch (ParseException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {httpClient.close();} catch (IOException e) {e.printStackTrace();}}return result;}/*** 创建httpclient,支持http、https** return*/public static CloseableHttpClient buildHttpClient() {try {RegistryBuilderConnectionSocketFactory builder RegistryBuilder.create();ConnectionSocketFactory factory new PlainConnectionSocketFactory();builder.register(http, factory);KeyStore trustStore KeyStore.getInstance(KeyStore.getDefaultType());SSLContext context SSLContexts.custom().useTLS().loadTrustMaterial(trustStore, new TrustStrategy() {public boolean isTrusted(X509Certificate[] chain,String authType) throws CertificateException {return true;}}).build();LayeredConnectionSocketFactory sslFactory new SSLConnectionSocketFactory(context,SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);builder.register(https, sslFactory);RegistryConnectionSocketFactory registry builder.build();PoolingHttpClientConnectionManager manager new PoolingHttpClientConnectionManager(registry);ConnectionConfig connConfig ConnectionConfig.custom().setCharset(Charset.forName(defaultEncoding)).build();SocketConfig socketConfig SocketConfig.custom().setSoTimeout(100000).build();manager.setDefaultConnectionConfig(connConfig);manager.setDefaultSocketConfig(socketConfig);return HttpClientBuilder.create().setConnectionManager(manager).build();} catch (KeyStoreException e) {e.printStackTrace();} catch (KeyManagementException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;}public static boolean isJSON(String str) {boolean result false;try {Object objJSON.parse(str);result true;} catch (Exception e) {resultfalse;}return result;}public static void main(String[] args) {String url1 http://192.168.56.101:8196/test/get1;String result HttpUtils.getRequest(url1);System.out.println(result);String url2 http://192.168.56.101:8196/test/get2;MapString, Object params new HashMap();params.put(name, 一安未来1);params.put(addr, 北京1);String result2 HttpUtils.postRequest(url2, null,params);System.out.println(result2);String url3 http://192.168.56.101:8196/test/get3;JSONObject jsonObject new JSONObject();jsonObject.put(name, 一安未来2);jsonObject.put(addr, 北京2);String result3 HttpUtils.postRequest(url3, null,jsonObject);System.out.println(result3);}【GET请求信息】,请求地址:http://192.168.56.101:8196/test/get1,请求参数:null
【GET请求信息】,请求地址:https://192.168.56.101:8196/test/get1,请求参数:null,返回结果:{result:success}【POST请求信息】,请求地址:http://192.168.56.101:8196/test/get2,请求参数:{name一安未来1, addr北京1}
【POST请求信息】,请求地址:http://192.168.56.101:8196/test/get2,请求参数:{name一安未来1, addr北京1},返回结果:{name:一安未来1,addr:北京1}【POST请求信息】,请求地址:http://192.168.56.101:8196/test/get3,请求参数:{name:一安未来2,addr:北京2}
【POST请求信息】,请求地址:http://192.168.56.101:8196/test/get3,请求参数:{name:一安未来2,addr:北京2},返回结果:{name:一安未来2,addr:北京2}}接口类
RestController
public class TestController {GetMapping(get1)public String test1(){return {\result\:\success\};}PostMapping(get2)private MapString, Object test2(RequestParam MapString,Object map){return map;}PostMapping(get3)private Map test3(RequestBody MapString,Object map){return map;}}