ADD file via upload

main
pe9vkn3zc 5 months ago
parent f5fcbfd902
commit 7a4c79010f

@ -0,0 +1,170 @@
package com.utils;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* HTTP
*
* HTTP GET
*
*
* 1. JavaHttpURLConnection
* 2. UTF-8
* 3.
* 4.
*
* 使
* - API
* -
* - HTTP
*
* @author long.he01
*/
public class HttpClientUtils {
/**
* HTTP GET
*
* @param uri URL
* @return null
* @description 使GETHTTPUTF-8
* @author: long.he01
*/
public static String doGet(String uri) {
// 使用StringBuilder构建响应内容更高效
StringBuilder result = new StringBuilder();
try {
String res = "";
// 创建URL对象
URL url = new URL(uri);
// 打开HTTP连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// 设置请求方法为GET
conn.setRequestMethod("GET");
// 设置连接超时和读取超时时间(建议添加)
conn.setConnectTimeout(5000); // 5秒连接超时
conn.setReadTimeout(10000); // 10秒读取超时
// 设置请求头(可根据需要添加)
conn.setRequestProperty("Accept", "application/json");
conn.setRequestProperty("User-Agent", "Mozilla/5.0");
// 获取响应码
int responseCode = conn.getResponseCode();
// 检查请求是否成功200表示成功
if (responseCode == HttpURLConnection.HTTP_OK) {
// 创建输入流读取器使用UTF-8编码避免中文乱码
BufferedReader in = new BufferedReader(
new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line;
// 逐行读取响应内容
while ((line = in.readLine()) != null) {
// 将每行内容添加到结果中,并添加换行符
res += line + "\n";
}
// 关闭输入流
in.close();
return res;
} else {
// 请求失败,记录错误信息
System.err.println("HTTP GET请求失败响应码: " + responseCode);
return null;
}
} catch (Exception e) {
// 打印异常堆栈信息
e.printStackTrace();
return null;
}
}
// 可以添加的增强方法:
/**
* GET
*
* @param uri URL
* @param connectTimeout
* @param readTimeout
* @return
*/
public static String doGet(String uri, int connectTimeout, int readTimeout) {
StringBuilder result = new StringBuilder();
try {
URL url = new URL(uri);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(connectTimeout);
conn.setReadTimeout(readTimeout);
// 设置通用请求头
conn.setRequestProperty("Accept", "*/*");
conn.setRequestProperty("Connection", "keep-alive");
conn.setRequestProperty("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36");
int responseCode = conn.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(
new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line;
while ((line = in.readLine()) != null) {
result.append(line).append("\n");
}
in.close();
return result.toString();
} else {
System.err.println("HTTP请求失败响应码: " + responseCode);
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* GET
*
* @param uri URL
* @param retryTimes
* @return
*/
public static String doGetWithRetry(String uri, int retryTimes) {
for (int i = 0; i < retryTimes; i++) {
try {
String result = doGet(uri);
if (result != null) {
return result;
}
// 等待一段时间后重试
if (i < retryTimes - 1) {
Thread.sleep(1000 * (i + 1)); // 递增等待时间
}
} catch (InterruptedException ie) {
Thread.currentThread().interrupt();
break;
} catch (Exception e) {
// 记录日志,继续重试
System.err.println("第" + (i + 1) + "次请求失败: " + e.getMessage());
}
}
return null;
}
}
Loading…
Cancel
Save