Java web如何在接口中设置请求头和响应头

249 阅读1分钟

设置响应头

Servlet层面 使用HttpServletResponse

import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @GetMapping("/hello")
    public String hello(HttpServletResponse response) {
        response.setHeader("X-Custom-Header", "my-value");
        response.setContentType("text/html");
        return "Hello, World!";
    }
}

Spring MVC层面 使用ResponseEntity

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.http.HttpHeaders;

@RestController
public class MyController {

    @GetMapping("/hello")
    public ResponseEntity<String> hello() {
        HttpHeaders headers = new HttpHeaders();
        headers.add("X-Custom-Header", "my-value");
        headers.setContentType(org.springframework.http.MediaType.TEXT_HTML);

        return ResponseEntity.ok()
                             .headers(headers)
                             .body("Hello, World!");
    }
}

设置请求头

使用RestTemplate

import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;

public class MyClient {

    public static void main(String[] args) {
        RestTemplate restTemplate = new RestTemplate();

        HttpHeaders headers = new HttpHeaders();
        headers.add("X-Custom-Header", "my-value");
        headers.setContentType(org.springframework.http.MediaType.APPLICATION_JSON);

        HttpEntity<String> entity = new HttpEntity<>("some json body", headers);

        ResponseEntity<String> response = restTemplate.exchange(
            "http://example.com",
            HttpMethod.GET,
            entity,
            String.class
        );

        System.out.println(response.getBody());
    }
}

使用HttpClient

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class HttpClientExample {

    public static void main(String[] args) {
        // 创建HttpClient实例
        HttpClient httpClient = HttpClient.newHttpClient();

        // 创建HttpRequest实例
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("http://example.com"))
                .header("User-Agent", "Java 11 HttpClient")
                .header("Accept", "application/json") // 设置请求头
                .GET() // 设置请求方法为GET
                .build();

        // 发送请求并获取响应
        try {
            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());

            // 输出响应状态码
            System.out.println("Response Code: " + response.statusCode());

            // 输出响应体
            System.out.println("Response Body: " + response.body());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}