Получить заголовок запроса при весенней загрузке - PullRequest
1 голос
/ 07 февраля 2020

Как получить заголовок и тело текущего запроса из приложения, которое вызвало мое приложение Springboot? Мне нужно извлечь эту информацию. К сожалению, это не работает. Я попытался получить текущий запрос с этим примером кода ({ ссылка }):

public static HttpServletRequest getCurrentHttpRequest(){
    RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
    if (requestAttributes instanceof ServletRequestAttributes) {
        HttpServletRequest request = ((ServletRequestAttributes)requestAttributes).getRequest();
        return request;
    }
    throw new IllegalArgumentException("Request must not be null!");
}

И затем я попытался получить тело

ContentCachingRequestWrapper requestWrapper = (ContentCachingRequestWrapper) currentRequest;
    String requestBody = new String(requestWrapper.getContentAsByteArray());

Может кто-нибудь скажите мне, что я делаю не так? Заранее спасибо

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

@ TryHard, вы используете пружинную загрузку, тогда для вас предпочтительнее следующий способ,

@RestController
public class SampleController {
    @RequestMapping("/get-header-data")
    public ResponseEntity<?> sampleEndpoint(HttpServletRequest request) {
        // request object comes with various in-built methods use as per your requirement.
        request.getHeader("<key>");
    }
}
1 голос
/ 07 февраля 2020
@RestController
public class SampleController {

    @PostMapping("/RestEndpoint")
    public ResponseEntity<?> sampleEndpoint(@RequestHeader Map<String, String> headers,@RequestBody Map<String,String> body) {
        //Do something with header / body
        return null;
    }
}

Если приложения обмениваются данными через конечную точку отдыха, я считаю, что это было бы самым простым решением. Весной вы можете добавить аннотации RequestHeader и RequestBody к аргументам метода, чтобы настроить их использование.

Конечно, вы можете сопоставить RequestBody напрямую с некоторым POJO вместо использования карты, но только в качестве примера.

Дайте мне знать, если это то, что вы искали!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...