该服务返回一些错误状态500,我想将其返回给客户端。 实际上,它已返回,我可以在HTTP响应对象的客户端(webApp)中看到(状态,错误消息...), 但是第三次必须重新设置移动优先服务器(运行JAVA Http适配器的服务器)。 通过成功响应(状态200),不需要重新启动或执行任何操作,服务器就可以稳定运行。
这是我的代码:
public void execute(HttpUriRequest req, HttpServletResponse resultResponse)
throws IOException, IllegalStateException, SAXException {
HttpResponse response = client.execute(req);
if(response.getStatusLine().getStatusCode() != HttpStatus.SC_OK){
resultResponse.sendError(response.getStatusLine().getStatusCode(), response.getStatusLine().getReasonPhrase());
//was tried but the same result
//resultResponse.setStatus(response.getStatusLine().getStatusCode());
//resultResponse.getWriter().close();
}else{
response.getEntity().writeTo(resultResponse.getOutputStream());
}
}
也许这种组合无法一起使用,或者我的resultResponse出了点问题!
答案 0 :(得分:0)
如此处所述:enter link description here,并在Servlet书中-Java™Servlet规范版本2.4的SRV.5.2节标题
正确的方法是:
ServletOutputStream os = resultResponse.getOutputStream(); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ response.getEntity().writeTo(resultResponse.getOutputStream());
}else{
resultResponse.sendError(response.getStatusLine().getStatusCode(), response.getStatusLine().getReasonPhrase());
response.getEntity().getContent().close();
os.write(response.getStatusLine().getReasonPhrase().getBytes());
}
os.flush();
os.close();