我正在尝试开发一个将用户从page1重定向到page2的路由。
当用户访问网址时触发路由:http://localhost:8080/servlets/doSomething(第1页) 我希望它被重定向到http://google.com例如(第2页)
我在Camel中公开了一个servlet:
web.xml中的:
class Buf(ctypes.c_void_p):
def __new__(cls, size):
return malloc(size)
...
def __del__(self):
...
libc.free(self)
在骆驼语境中:
<servlet>
<servlet-name>camelServlet</servlet-name>
<servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>camelServlet</servlet-name>
<url-pattern>/servlets/*</url-pattern>
</servlet-mapping>
我尝试使用以下方式重定向:
<camel:from uri="servlet://doSomething?servletName=camelServlet" />
但得到java.net.ConnectException:连接超时:连接
答案 0 :(得分:1)
只需发送并适当HTTP status code ,然后将您要重定向的网址放入HTTP标头&#34;位置&#34;。
在Camel Java中,这应该是这样的:
from("servlet://doSomething?servletName=camelServlet")
.setHeader("Location", simple("http://www.google.com"))
.setHeader(Exchange.HTTP_RESPONSE_CODE, 302);
答案 1 :(得分:0)
您可以尝试此代理路由:
<route id="ProxyRoute">
<from uri="jetty:http://0.0.0.0:8080/servlets/doSomething?matchOnUriPrefix=true&continuationTimeout=900000&httpClient.timeout=900000"/>
<to uri="jetty:http://google.com?bridgeEndpoint=true&throwExceptionOnFailure=false&continuationTimeout=900000&httpClient.timeout=900000"/>
</route>
答案 2 :(得分:0)
非常简单的例子:
public void redirectFromSuccess(Exchange exchange) {
exchange.getIn().setHeader(Exchange.HTTP_METHOD, constant("POST"));
exchange.getIn().setHeader(Exchange.HTTP_URI,"http://www.google.com");
exchange.getIn().setHeader(Exchange.HTTP_RESPONSE_CODE,"301");
}