繁体   English   中英

如何在来自 Java 适配器的响应中返回状态代码 500?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM