[英]How do I return status code 500 in the Response from Java Adapter?
该服务返回一些错误状态 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 出了问题!
正如此处和 Servlet book - Section SRV.5.2 Headers of the Java™ Servlet Specification Version 2.4 中所述,正确的方法是:
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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.