Desidero misurare l'ora della richiesta HTTP GET di una chiamata RestTemplate.getForObject
senza il tempo necessario per analizzare la risposta. Quindi solo il tempo necessario per la chiamata HTTP remota. Ho già provato a installare un ClientHttpRequestInterceptor
ma non penso che questo sia il modo giusto per farlo come il tempo sembra essere sbagliato:MeasTempo Spring RestTemplate Tempo di richiesta HTTP
public class PerfRequestSyncInterceptor implements ClientHttpRequestInterceptor {
private Logger log = Logger.getLogger(this.getClass());
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body,
ClientHttpRequestExecution execution) throws IOException {
long start = System.nanoTime();
ClientHttpResponse resp = execution.execute(request, body);
log.debug("remote request time: "
+ ((System.nanoTime() - start) * Math.pow(10, -9)));
return resp;
}
}
chiamata:
RestTemplate rest = new RestTemplate();
List<ClientHttpRequestInterceptor> interceptors = new ArrayList<ClientHttpRequestInterceptor>();
interceptors.add(new PerfRequestSyncInterceptor());
rest.setInterceptors(interceptors);
Response inob = rest.getForObject(xmlURL, Response.class);
Come posso misurare il tempo di una richiesta HTTP RestTemplate?
Ho avuto lo stesso problema. È necessario effettuare una chiamata al metodo sull'oggetto risposta per bloccare l'esecuzione fino a quando la risposta è disponibile. – jaydfwtx