我非常感谢在这个问题上的任何帮助。我使用Camel作为代理,并使用路由上的处理器将http请求和响应记录到数据库中。
这是我的路线:
final String proxyEndpoint = https4://targetServler?bridgeEndpoint=true&throwExceptionOnFailure=false;
onException(Exception.class).handled(false).process(exceptionHandlingProcessor)
.id(exceptionHandlingProcessor.getId());
from("servlet://?matchOnUriPrefix=true")//
.setExchangePattern(ExchangePattern.InOut)//
.routeId("proxy-route")//
.choice()//
.when(header(Exchange.HTTP_PATH)//
.regex("^(\\/?static\\/.*|favicon.ico)$"))//
.to(proxyEndpoint)//
.otherwise()//
.process(validationProcessor).id(validationProcessor.getId())//
.process(logRequestProcessor).id(logRequestProcessor.getId())//
.to(proxyEndpoint)//
.convertBodyTo(String.class)//
.process(logResponseProcessor).id(logResponseProcessor.getId());
这可以工作并路由每个请求,并且任何非静态资源都记录到数据库(在处理器内部完成)。
然后我需要DB中其他请求/其他表的第二条路由,但这次必须更改URI(从DB中读取)。所以我补充道:
from("servlet://?matchOnUriPrefix=true&servletName=AnotherCamelServlet")
.setExchangePattern(ExchangePattern.InOut)//
.routeId("second-route")//
.process(handleRequestForSecondRouteProcessor)//
.id(handleRequestForSecondRouteProcessor.getId())//
.to("https4://dummyuri")//
.convertBodyTo(String.class)//
.process(logResponseForSecondRouteProcessor).id(logResponseForSecondRouteProcessor.getId());
在handleRequestForSecondRouteProcessor中,我添加了uri头的替换:
inMessage.setHeader(Exchange.HTTP_URI, newUriFromDatabase
+ "?bridgeEndpoint=true&throwExceptionOnFailure=false"); // not sure if needed
但是每次我调用第二个路由时,都会发生连接重置。(顺便说一句,如果我调用第一个路由(有效),然后按F5,同样的问题会发生)。
我很欣赏每一个想法,因为我在这个话题上已经好几天了。如果需要更多信息,请发表评论。谢谢!
当您收到第一个请求时,会有很多标头包含与该请求相关的信息。其中一些标头很可能会干扰您的下一个请求。在调用第二个路由之前尝试删除所有标头,看看是否有帮助,然后您可以从那里继续并尝试删除必要的标头。
.removeHeaders("*")
我目前有两个MQTT代理,它们都工作得很好。其中一个是我本地网络上的覆盆子派。另一个是托管在CloudMQTT上的远程代理。 目标是使两个代理彼此同步。当然,简单的解决方案是桥,但我遇到了一些困难,得到一个适当的桥设置。 据我所知,只有当你有一个静态IP和端口转发到Raspberry Pi时,你才能连接到你的本地网络,那么我如何才能绕过这个问题呢?两个代理需要保持一个永久的TCP连接打开,但是远程
我正在用Cordova和Ionic编写一个混合应用程序。我的问题是,我想通过http请求访问服务器,我需要更改设备的用户代理来传递密钥。 但当我查看服务器的日志时,用户代理没有改变: “GET /service HTTP/1.1” - “Mozilla/5.0 (Macintosh;Intel Mac OS X 10_10_1) AppleWebKit (KHTML, like Gecko) Ch
我的hql查询似乎有什么问题? 错误: 组织。冬眠hql。内部的ast。QuerySyntaxException:意外标记:第1行第263列附近的标记 我假设它是在谈论
问题内容: 我无法正确设置https连接的属性。根据我的收集,可以通过VM选项或通过设置http- header属性。但是,通过VM选项设置用户代理会导致将Java / [version]附加到http.agent的值之后。同时,仅适用于http连接,不适用于https(至少在我尝试时)。 我已经通过使用WireShark检查http通讯来发现/验证了问题。有没有办法解决? 更新:附加信息 看来我
我一直在工作的Apache骆驼连接https URLS'通过提供TLS证书通过代理,但得到错误org.apache.http.conn.不支持的模式异常:超文本传输协议不支持 下面是驼峰路由和带有代理的ssl上下文 公共类HttpProxyRouter扩展了RouteBuilder{ } 遇到错误 org.apache.catalina.core.Application Context logIN
这是我之前的问题:如果一些注入的属性发生了变化,请重新注入CDI bean 同样,我使用的是CDI(焊缝),而不是Spring IoC,所以我不能使用Spring cloud config中的,但我认为我期望的功能可以与使用自定义范围类似。