ClientHttpRequestInterceptor Как получить тело запроса в методе перехвата? - PullRequest
0 голосов
/ 26 марта 2020
public class RequestResponseLoggingInterceptor implements ClientHttpRequestInterceptor{

@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
        throws IOException {
    logRequest(request, body );
     ClientHttpResponse response = execution.execute(request, body);
     return response;
}

private void logRequest(HttpRequest request, byte[] body) {
    try {
        String jsonSting=new String(body, "UTF-8");
        System.out.println("*****"+jsonSting);

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

Я пытаюсь перехватить запрос API отдыха, используя пользовательский перехватчик. В приведенном выше коде я не могу получить полное тело запроса. Тело запроса, как показано ниже -

{
"header" : {
"functionRequesterIdentifier" : "1.3.6.1.4.1.11791.104.85.1",
"functionCallIdentifier" : "1234567890"
},
"eid" : "89049032000001000000002193978472",
"iccid" : "8944500803162021501",
"smsr-id" : "65.105.114.79.110.118.51",
"mno-id" : "1.3.6.1.4.1.11791.104.85.1",
"smdp-id" : "1.2.3.4.5",
 "callbackUrl" : "http://PUN1DT11239:8081/mock/audit"

}

В операторе System.out.println печатается только

{"username":"shreyas","password":"Happy2020","client-ip":"127.0.0.1","stateless":true}

Полагаю, новая строка (тело, "UTF-8"); мог получить полные части тела, но это не так.

Как получить полное Json тело из запроса и перехватчика?

Обновление - шаблон RestTemplate создается, как показано ниже -

        ClientHttpRequestFactory factory = new BufferingClientHttpRequestFactory(new SimpleClientHttpRequestFactory());
    RestTemplate restTemplate = new RestTemplate(factory);
    restTemplate.setRequestFactory(requestFactory);
    List<ClientHttpRequestInterceptor> interceptors =  restTemplate.getInterceptors();
    if(null == interceptors){
        interceptors = new ArrayList<>();
    }
    addInterceptorToChain(interceptors);
...