package com.market.api.common.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.*;
import java.io.*;
import java.net.ConnectException;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.URLConnection;
import java.security.cert.X509Certificate;
/**
* @description: 通用http发送方法
* @author: wuming
* @create: 2023-05-08 10:24:31
*/
public class HttpUtils {
private static final Logger log = LoggerFactory.getLogger(HttpUtils.class);
/**
* 向指定 URL 发送GET方法的请求
*
* @param url 发送请求的 URL
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
*/
public static String sendGet(String url, String param) {
return sendGet(url, param, "UTF-8");
}
/**
* 向指定 URL 发送GET方法的请求
*
* @param url 发送请求的 URL
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @param contentType 编码类型
* @return 所代表远程资源的响应结果
*/
public static String sendGet(String url, String param, String contentType) {
StringBuilder result = new StringBuilder();
BufferedReader in = null;
try {
String urlNameString = url + "?" + param;
log.info("sendGet - {}", urlNameString);
URL realUrl = new URL(urlNameString);
URLConnection connection = realUrl.openConnection();
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
connection.connect();
in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType));
String line;
while ((line = in.readLine()) != null) {
result.append(line);
}
log.info("recv - {}", result);
} catch (ConnectException e) {
log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e);
} catch (SocketTimeoutException e) {
log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e);
} catch (IOException e) {
log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e);
} catch (Exception e) {
log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e);
} finally {
try {
if (in != null) {
in.close();
}
} catch (Exception ex) {
log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
}
}
return result.toString();
}
/**
* 向指定 URL 发送POST方法的请求
*
* @param url 发送请求的 URL
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
*/
public static String sendPost(String url, String param) {
PrintWriter out = null;
BufferedReader in = null;
StringBuilder result = new StringBuilder();
try {
String urlNameString = url;
log.info("sendPost - {}", urlNameString);
URL realUrl = new URL(urlNameString);
URLConnection conn = realUrl.openConnection();
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("contentType", "utf-8");
conn.setDoOutput(true);
conn.setDoInput(true);
out = new PrintWriter(conn.getOutputStream());
out.print(param);
out.flush();
in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
String line;
while ((line = in.readLine()) != null) {
result.append(line);
}
log.info("recv - {}", result);
} catch (ConnectException e) {
log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
} catch (SocketTimeoutException e) {
log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
} catch (IOException e) {
log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
} catch (Exception e) {
log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
} finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
}
}
return result.toString();
}
public static String sendSSLPost(String url, String param) {
StringBuilder result = new StringBuilder();
String urlNameString = url + "?" + param;
try {
log.info("sendSSLPost - {}", urlNameString);
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());
URL console = new URL(urlNameString);
HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
conn.setRequestProperty("Accept-Charset", "utf-8");
conn.setRequestProperty("contentType", "utf-8");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setSSLSocketFactory(sc.getSocketFactory());
conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
conn.connect();
InputStream is = conn.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String ret = "";
while ((ret = br.readLine()) != null) {
if (ret != null && !"".equals(ret.trim())) {
result.append(new String(ret.getBytes("ISO-8859-1"), "utf-8"));
}
}
log.info("recv - {}", result);
conn.disconnect();
br.close();
} catch (ConnectException e) {
log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e);
} catch (SocketTimeoutException e) {
log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e);
} catch (IOException e) {
log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e);
} catch (Exception e) {
log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e);
}
return result.toString();
}
private static class TrustAnyTrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) {
}
@Override
public X509Cer
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
springboot+vue的校园二手交易市场 (283个子文件)
安装依赖.bat 53B
安装依赖.bat 53B
前端启动脚本.bat 11B
cssReset.css 853B
.env.development 89B
.editorconfig 257B
.editorconfig 121B
.eslintignore 38B
.gitignore 214B
.gitignore 206B
index.html 673B
index.html 637B
favicon.ico 66KB
favicon.ico 4KB
HttpUtils.java 8KB
BaseController.java 8KB
LocalDateTimeUtils.java 6KB
HttpClient.java 4KB
ReportsController.java 4KB
GoodsController.java 3KB
LoginController.java 3KB
CommentsController.java 2KB
NoticeController.java 2KB
UploadController.java 2KB
AskToBuyController.java 2KB
MessagesController.java 2KB
StudentController.java 2KB
RecordsController.java 2KB
TypesController.java 2KB
AdminsController.java 2KB
ResultConstant.java 1KB
Student.java 1KB
ReturnMsg.java 1KB
CommentsServiceImpl.java 1KB
AskToBuyServiceImpl.java 1KB
MessagesServiceImpl.java 1KB
ReportsServiceImpl.java 1KB
RecordsServiceImpl.java 1KB
StudentServiceImpl.java 1KB
AdminsServiceImpl.java 1KB
NoticeServiceImpl.java 1KB
GoodsServiceImpl.java 1KB
TypesServiceImpl.java 1KB
Goods.java 1KB
ReportsDTO.java 1KB
Reports.java 1006B
Comments.java 1000B
AskToBuy.java 999B
GoodsDTO.java 992B
GlobalCorsConfig.java 983B
MybatisPlusConfig.java 964B
AskToBuyDTO.java 961B
CommentsDTO.java 933B
Notice.java 932B
Records.java 927B
Messages.java 909B
MultipartConfig.java 863B
MessagesDTO.java 837B
RecordsDTO.java 786B
BaseEntity.java 781B
Types.java 737B
MessagesService.java 712B
AskToBuyService.java 712B
CommentsService.java 712B
Admins.java 708B
StudentService.java 701B
ReportsService.java 701B
RecordsService.java 701B
AdminsService.java 693B
NoticeService.java 690B
TypesService.java 679B
GoodsService.java 679B
BaseDao.java 668B
DruidConfig.java 609B
GlobalExceptionHandle.java 548B
Application.java 493B
StudentDTO.java 426B
AdminsDTO.java 425B
NoticeDTO.java 422B
TypesDTO.java 418B
CommentsDao.java 277B
AskToBuyDao.java 277B
MessagesDao.java 277B
ReportsDao.java 274B
AdminsDao.java 274B
RecordsDao.java 274B
StudentDao.java 274B
NoticeDao.java 271B
GoodsDao.java 268B
TypesDao.java 268B
BaseSelectEntity.java 254B
bg.jpg 1.36MB
vue.config.js 7KB
.eslintrc.js 5KB
vue.config.js 4KB
index.js 4KB
api.js 3KB
main.js 3KB
index.js 3KB
Breadcrumb.spec.js 3KB
共 283 条
- 1
- 2
- 3
资源评论
程序猿的Code日常
- 粉丝: 512
- 资源: 478
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功