我正试图通过postman测试restapi。调用restapi(get req a)时,向另一个服务发出内部httpget请求(get req b),解析该服务的xml响应,修改它并将其作为原始请求(get req a)的响应发送回去。
我想将内部http请求(get req b)的响应头设置为原始请求(get req a)的响应头。
ServletOutputStream os = response.getOutputStream();
try
{
XMLOutputter outputter = new XMLOutputter();
// For loop for copying headers
Header [] headers = req.getResponseHeaders();
for (Header h : headers) {
LOG.info("Setting headers");
response.addHeader(h.getName(), h.getValue());
}
outputter.output(dashTrimmer.getDocument(),os);
response.setStatus(statusCode);
os.flush();
os.close();
LOG.info("Trimmed File sent");
return;
} catch (IOException e) {
LOG.info(e.getMessage());
} catch (Exception e) {
LOG.info(e.getMessage());
}
response.setStatus(statusCode);
return;
在下面的代码中,有一个for循环,用于将所有头从内部http请求(get req b)复制到原始get请求(get req a)的httpservletresponse中。
当我注解掉for循环时,原始请求的响应时间约为250ms。
当存在for循环时,响应时间约为20秒。在postman中,响应代码200在~1s内收到,而在logs中,我可以看到请求在~1s内发送的logstation“trimmed file sent”。但连接仍处于活动状态,请求未完成。
这种行为的原因可能是什么?我该如何修复它?
暂无答案!
目前还没有任何答案,快来回答吧!