Java 在使用apache http客户端发送请求URI之前修改请求URI
我有一个库,调用者通过给我HttpUriRequest Apache HTTP客户端对象来发送HTTP请求。在某些情况下,由于某些对调用方透明的隧道,我需要修改请求的URL以使用HTTP而不是HTTPS 我该怎么做呢?看起来我不能在物体上直接改变它。我唯一能看到的是创建一个新的HttpUriRequest对象,它是另一个对象的克隆,但URL已更改Java 在使用apache http客户端发送请求URI之前修改请求URI,java,http,url-rewriting,apache-httpclient-4.x,apache-httpcomponents,Java,Http,Url Rewriting,Apache Httpclient 4.x,Apache Httpcomponents,我有一个库,调用者通过给我HttpUriRequest Apache HTTP客户端对象来发送HTTP请求。在某些情况下,由于某些对调用方透明的隧道,我需要修改请求的URL以使用HTTP而不是HTTPS 我该怎么做呢?看起来我不能在物体上直接改变它。我唯一能看到的是创建一个新的HttpUriRequest对象,它是另一个对象的克隆,但URL已更改 有更好的方法吗?可以使用自定义路由规划器将传出请求重新路由到不同的主机/路由 CloseableHttpClient client = HttpCli
有更好的方法吗?可以使用自定义路由规划器将传出请求重新路由到不同的主机/路由
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();
修改整个请求怎么样?4.3似乎没有足够的功能。我需要翻译成http//realdestination.com/realpath/val/val.RequestBuilder在4.3中引入,URIBuilder在4.2中引入,用于救援。我可以在哪里修改它?问题是我没有看到任何可行的注射点。RoutePlanner绝对不是这个地方。我现在使用动态代理包装整个客户端请求拦截器