相关疑难解决方法(0)

JAX-RS - 如何将JSON和HTTP状态代码一起返回?

我正在编写REST Web应用程序(NetBeans 6.9,JAX-RS,TopLink Essentials)并尝试返回JSON 和 HTTP状态代码.我已准备好代码并且在从客户端调用HTTP GET方法时返回JSON.实质上:

@Path("get/id")
@GET
@Produces("application/json")
public M_?? getMachineToUpdate(@PathParam("id") String id) {

    // some code to return JSON ...

    return myJson;
}
Run Code Online (Sandbox Code Playgroud)

但是,我也想用JSON数据一起返回的HTTP状态代码(500,200,204,等).

我试着用HttpServletResponse:

response.sendError("error message", 500);
Run Code Online (Sandbox Code Playgroud)

但这使得浏览器认为它是"真正的"500,因此输出网页是一个常规的HTTP 500错误页面.

我想返回一个HTTP状态代码,以便我的客户端JavaScript可以根据它处理一些逻辑(例如在HTML页面上显示错误代码和消息).这是可能的还是HTTP状态代码不能用于此类事情?

java rest jax-rs http-status-codes

237
推荐指数
8
解决办法
45万
查看次数

如何在JAX-RS中设置响应头,以便用户看到Excel的下载弹出窗口?

我编写了使用REST JAX-RS生成Excel文件的代码,并确认生成的Excel文件位于GlassFish服务器目录中.

但我的目标是当用户点击按钮(生成Excel .xls)时,我想要下载弹出窗口,询问用户是否保存或打开.xls文件,就像任何其他Web服务用于下载任何类型的文件一样.

根据我的搜索,步骤是:

  1. 生成Excel .xls(DONE)

  2. 将excel写入流

  3. 在JAX-RS文件中,将响应头设置为类似的,

    String fileName ="Blah_Report.xls"; response.setHeader("Content-Disposition","attachment; filename ="+ fileName);

我的问题是我在JAX-RS文件中做了所有这些,而且我没有可用的HttpServletResponse对象.

根据Add Response Header到JAX-RS Webservice的答案

他说:

您可以通过Web服务中的@Context注释注入对实际HttpServletResponse的引用,并使用addHeader()等来添加标头.

如果没有示例代码,我无法确切地说明这意味着什么.

java rest header jax-rs glassfish-3

47
推荐指数
2
解决办法
10万
查看次数

标签 统计

java ×2

jax-rs ×2

rest ×2

glassfish-3 ×1

header ×1

http-status-codes ×1