泽西URL转发
在Jersey REST方法中,我想转发到另一个网站。 我怎样才能做到这一点?
@Path("/") public class News { @GET @Produces(MediaType.TEXT_HTML) @Path("go/{news_id}") public String getForwardNews( @PathParam("news_id") String id) throws Exception { //how can I make here a forward to "http://somesite.com/news/id" (not redirect)? return ""; } }
编辑:
尝试执行以下操作时,我No thread local value in scope for proxy of class $Proxy78
错误的No thread local value in scope for proxy of class $Proxy78
:
@Context HttpServletRequest request; @Context HttpServletResponse response; @Context ServletContext context; ... RequestDispatcher dispatcher = context.getRequestDispatcher("url"); dispatcher.forward(request, response);
public Response foo() { URI uri = UriBuilder.fromUri( ).build(); return Response.seeOther( uri ).build(); }
我在我的应用程序中使用上面的代码,它的工作原
试试这个,它对我有用:
public String getForwardNews( @Context final HttpServletRequest request, @Context final HttpServletResponse response) throws Exception { System.out.println("CMSredirecting... "); response.sendRedirect("YourUrlSite"); return ""; }
我现在无法测试它。 但为什么不……
步骤1.访问HttpServletResponse。 为此,在您的服务中声明如下:
@Context HttpServletResponse _currentResponse;
第2步。进行重定向
... _currentResponse.sendRedirect(redirect2Url);
编辑
好吧,要调用forward方法,您需要访问ServletContext。 它可以像响应一样解决:
@javax.ws.rs.core.Context ServletContext _context;
现在_context.forward
可用