在Java中获取HTTP请求
在Java中获取HTTP请求的方式取决于你使用的框架或环境,以下是几种常见场景下的方法:

在Servlet环境中获取
在Java Web应用(Servlet)中,可以通过HttpServletRequest对象获取请求信息:
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
// 获取请求方法
String method = request.getMethod();
// 获取请求URI
String uri = request.getRequestURI();
// 获取请求参数
String param = request.getParameter("paramName");
// 获取请求头
String headerValue = request.getHeader("User-Agent");
// 获取请求体
BufferedReader reader = request.getReader();
String line;
StringBuilder requestBody = new StringBuilder();
while ((line = reader.readLine()) != null) {
requestBody.append(line);
}
}
在Spring Boot中获取
在Spring Boot中,可以通过多种方式获取HTTP请求:
通过依赖注入
@RestController
public class MyController {
@GetMapping("/example")
public String example(HttpServletRequest request) {
// 使用request对象
return request.getRequestURI();
}
}
通过注解获取特定部分
@GetMapping("/example")
public String example(
@RequestParam String name, // 获取请求参数
@RequestHeader("User-Agent") String userAgent, // 获取请求头
@RequestBody String body // 获取请求体
) {
return name + " - " + userAgent + " - " + body;
}
使用Java原生HttpURLConnection
如果你需要手动发送HTTP请求并获取响应:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpRequestExample {
public static void main(String[] args) throws Exception {
URL url = new URL("https://example.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 设置请求方法
connection.setRequestMethod("GET");
// 获取响应码
int responseCode = connection.getResponseCode();
System.out.println("Response Code: " + responseCode);
// 读取响应内容
BufferedReader in = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println("Response: " + response.toString());
}
}
使用第三方库
使用Apache HttpClient
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
public class HttpClientExample {
public static void main(String[] args) throws Exception {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpGet request = new HttpGet("https://example.com");
try (CloseableHttpResponse response = httpClient.execute(request)) {
String result = EntityUtils.toString(response.getEntity());
System.out.println(result);
}
}
}
}
使用OkHttp
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class OkHttpExample {
public static void main(String[] args) throws Exception {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://example.com")
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println(response.body().string());
}
}
}
选择哪种方法取决于你的具体需求和应用场景,在Web应用中,通常使用框架提供的方法(如Spring的HttpServletRequest),而在需要手动发送HTTP请求时,可以使用原生Java或第三方库。


