我有一个库,调用者可以通过给我HttpUriRequest(Apache HTTP客户端)对象来发送HTTP请求。在某些情况下,由于某些隧道应该对调用者透明,我需要修改请求的URL以使用HTTP而不是HTTPS。
我该怎么做呢?似乎我无法在对象上正确地改变它。我唯一能看到的是创建一个新的HttpUriRequest对象,该对象是另一个的克隆,但URL已更改。
有更好的方法吗?
答案 0 :(得分:1)
可以使用自定义路由规划器将传出请求重新路由到不同的主机/路由
CloseableHttpClient client = HttpClients.custom()
.setRoutePlanner(new DefaultRoutePlanner(DefaultSchemePortResolver.INSTANCE) {
@Override
public HttpRoute determineRoute(
final HttpHost target,
final HttpRequest request,
final HttpContext context) throws HttpException {
return super.determineRoute(
target.getHostName().equals("overhere") ? new HttpHost("overthere", -1, "https") : target,
request,
context);
}
})
.build();