在 Java 中,“获取 HTTP 响应”通常有两种常见场景:
下面分别说明。
HttpClient(推荐)import java.net.URI;
import java.net.http.*;
import java.time.Duration;
public class HttpExample {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.GET()
.build();
HttpResponse<String> response =
client.send(request, HttpResponse.BodyHandlers.ofString());
// 获取响应信息
int statusCode = response.statusCode();
String body = response.body();
HttpHeaders headers = response.headers();
System.out.println("状态码: " + statusCode);
System.out.println("响应体: " + body);
System.out.println("响应头: " + headers.map());
}
}
✅ 优点:
HttpURLConnection(老方式)URL url = new URL("https://example.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
int code = conn.getResponseCode();
BufferedReader reader =
new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
reader.close();
System.out.println(code);
System.out.println(sb.toString());
⚠️ 已不推荐新项目使用
CloseableHttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet("https://example.com");
CloseableHttpResponse response = client.execute(get);
String result = EntityUtils.toString(response.getEntity());
int code = response.getStatusLine().getStatusCode();
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://example.com")
.build();
Response response = client.newCall(request).execute();
String body = response.body().string();
@GetMapping("/test")
public ResponseEntity<String> test() {
return ResponseEntity
.status(200)
.header("X-Custom", "abc")
.body("success");
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
resp.setStatus(200);
resp.getWriter().write("hello");
}
| 内容 | 获取方式 |
|---|---|
| 状态码 | response.statusCode() |
| 响应体 | response.body() |
| 响应头 | response.headers() |
| Cookie | response.headers().firstValue("Set-Cookie") |
如果你能提供:
我可以给你更精确的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。