前言
提示:
当前工具类get方式无法传分页数据,可自行篡改,不行就用post方式哈哈~~
提示:以下是本篇文章正文内容,下面案例可供参考
一、HttpClient工具类
package org.benben.modules.business.enterprise.utils;
/**
* @author 张帅
* @description
* @className HttpClient
* @date 2023/5/24 11:12
*/
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
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.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* HttpClient工具类
*/
public class HttpClient {
private static RequestConfig requestConfig = null;
static {
// 设置请求和传输超时时间
requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();
}
/**
* 发送get请求
*
* @param url 路径
* @return
*/
public static JSONObject httpGet(String url) {
// get请求返回结果
JSONObject jsonResult = null;
CloseableHttpClient client = HttpClients.createDefault();
// 发送get请求
HttpGet request = new HttpGet(url);
request.setConfig(requestConfig);
try {
CloseableHttpResponse response = client.execute(request);
// 请求发送成功,并得到响应
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 读取服务器返回过来的json字符串数据
HttpEntity entity = response.getEntity();
String strResult = EntityUtils.toString(entity, "utf-8");
// 把json字符串转换成json对象
jsonResult = JSONObject.parseObject(strResult);
} else {
}
} catch (IOException e) {
e.printStackTrace();
} finally {
request.releaseConnection();
}
return jsonResult;
}
/**
* post请求传输json参数
*
* @param url url地址
* @param jsonParam 参数
* @return
*/
public static JSONObject httpjsonPost(String url, JSONObject jsonParam) {
// post请求返回结果
CloseableHttpClient httpClient = HttpClients.createDefault();
JSONObject jsonResult = null;
HttpPost httpPost = new HttpPost(url);
// 设置请求和传输超时时间
httpPost.setConfig(requestConfig);
try {
if (null != jsonParam) {
// 解决中文乱码问题
StringEntity entity = new StringEntity(jsonParam.toString(), "utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
httpPost.setEntity(entity);
}
CloseableHttpResponse result = httpClient.execute(httpPost);
// 请求发送成功,并得到响应
if (result.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String str = "";
try {
// 读取服务器返回过来的json字符串数据
str = EntityUtils.toString(result.getEntity(), "utf-8");
// 把json字符串转换成json对象
jsonResult = JSONObject.parseObject(str);
} catch (Exception e) {
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
httpPost.releaseConnection();
}
return jsonResult;
}
/**
* post请求传输String参数 例如:name=Jack&sex=1&type=2
* Content-type:application/x-www-form-urlencoded
*
* @param url url地址
* @param strParam 参数
* @return
*/
public static JSONObject httpPost(String url, String strParam) {
// post请求返回结果
CloseableHttpClient httpClient = HttpClients.createDefault();
JSONObject jsonResult = null;
HttpPost httpPost = new HttpPost(url);
httpPost.setConfig(requestConfig);
try {
if (null != strParam) {
// 解决中文乱码问题
StringEntity entity = new StringEntity(strParam, "utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
httpPost.setEntity(entity);
}
CloseableHttpResponse result = httpClient.execute(httpPost);
System.out.println(result);
// 请求发送成功,并得到响应
if (result.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String str = "";
try {
// 读取服务器返回过来的json字符串数据
str = EntityUtils.toString(result.getEntity(), "utf-8");
// 把json字符串转换成json对象
jsonResult = JSONObject.parseObject(str);
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
httpPost.releaseConnection();
}
return jsonResult;
}
/**
* post请求传输Map<String,String>参数 【没测试过,备用】
* Content-type:application/x-www-form-urlencoded
*
* @param url url地址
* @param params 参数
* @return
*/
public static String post(String url, Map<String,String> params){
HttpPost post = null;
CloseableHttpResponse response=null;
try{
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
// // 设置超时时间
// httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 2000);
// httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 2000);
List<NameValuePair> list = new ArrayList<NameValuePair>();
params.forEach((k,v) ->{
NameValuePair pair = new BasicNameValuePair(k, v);
list.add(pair);
});
UrlEncodedFormEntity entity=null;
entity = new UrlEncodedFormEntity(list,"UTF-8");
post = new HttpPost(url);
// 构造消息头
post.setHeader("Content-type", "application/json; charset=utf-8");
post.setHeader("Connection", "Close");
post.setEntity(entity);
response = httpClient.execute(post);
if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
HttpEntity httpEntity = response.getEntity();
String result=EntityUtils.toString(httpEntity);
return result;
}else{
System.out.println("error");
}
}
catch (Exception e){
e.printStackTrace();
}finally {
if(post != null){
post.releaseConnection();
}
}
return "";
}
}
二、使用步骤
1.引入库
代码如下(示例):
/** 成功
* 新增地址
* @param map
* @throws IOException
* @throws SQLException
*/
@RequestMapping(value = "/addressencryption")
@ResponseBody
public Object addressencryption(@RequestBody Map<String,Object> map) {
//地址
String url = "http://127.0.0.1:8083/encr/encryption";
JSONObject item = new JSONObject();
//装进json
item.put("name", map.get("name"));
//数组转
List<Integer> idss = (List<Integer>)map.get("economize");
item.put("economize",String.valueOf(idss));
item.put("specificlocation",map.get("specificlocation"));
item.put("phone",map.get("phone"));
item.put("username",map.get("username"));
JSONObject result = HttpClient.httpjsonPost(url,item);
System.out.println(result);
return result;
}