Spring-Boot-Web: 如何获取原始请求?

12 浏览
0 Comments

Spring-Boot-Web: 如何获取原始请求?

我正在使用Spring-Boot-Web。

这是我的用于Web请求的处理程序。

@Component

@RequestMapping ("/foo")

@CrossOrigin (maxAge = 3600)

@RestController

public class WebHandler

{

@RequestMapping ("/bar")

public String bar () throws Exception

{

return "blabla";

}

}

我需要将完整的原始请求字符串(包括HTTP头和主体)传递给处理程序。

我该如何做到这一点?

0
0 Comments

Spring Boot Web: 如何获取原始请求?

在Spring Boot Web中,如果你需要获取原始请求的内容,可以使用HttpServletRequest对象。下面是一个示例代码:

@RestController
@RequestMapping("/foo")
public class WebHandler {
    @PostMapping("/bar")
    public void bar(HttpServletRequest request) throws Exception {
        BufferedReader reader = request.getReader();
        String body = reader.lines().collect(Collectors.joining("\n"));
        System.out.println(body);
        
        Enumeration headerNames = request.getHeaderNames();
        while (headerNames.hasMoreElements()) {
            String headerName = headerNames.nextElement();
            System.out.println(headerName + ": " + request.getHeader(headerName));
        }
    }
}

上述代码中,我们定义了一个`WebHandler`类,它使用`@RestController`和`@RequestMapping`注解来指定请求的路径。在`bar`方法中,我们通过HttpServletRequest对象来获取请求的原始内容。我们使用BufferedReader来读取请求的主体,然后将其转换为字符串并打印出来。然后,我们使用`getHeaderNames`方法来获取所有请求头的名称,并打印出每个请求头的名称和值。

除了以上的方法,你还可以从HttpServletRequest对象中获取其他信息。如果你只需要获取请求主体和请求头,可以使用以下代码:

@PostMapping("/bar")
public void bar(@RequestHeader Map headers, @RequestBody String body) {
    System.out.println(body);
    System.out.println(headers);
}

上述代码中,我们使用`@RequestHeader`注解来获取请求头,并使用`@RequestBody`注解来获取请求主体。然后我们将请求主体和请求头打印出来。

通过以上的方法,你可以方便地获取到Spring Boot Web中的原始请求内容。

0