在使用 apache http 客户端发送之前修改请求 URI
Modify request URI before it is sent with apache http client
我有一个库,调用者可以通过给我 HttpUriRequest(Apache HTTP 客户端)对象来发送 HTTP 请求。在某些情况下,由于某些对调用者透明的隧道,我需要修改请求的 URL 以使用 HTTP 而不是 HTTPS。
我该怎么做呢?似乎我不能直接在对象上更改它。我唯一能看到的是创建一个新的 HttpUriRequest 对象,它是另一个对象的克隆,但 URL 已更改。
有没有更好的方法?
可以使用自定义路由规划器将传出请求重新路由到不同的主机/路由
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();
我有一个库,调用者可以通过给我 HttpUriRequest(Apache HTTP 客户端)对象来发送 HTTP 请求。在某些情况下,由于某些对调用者透明的隧道,我需要修改请求的 URL 以使用 HTTP 而不是 HTTPS。
我该怎么做呢?似乎我不能直接在对象上更改它。我唯一能看到的是创建一个新的 HttpUriRequest 对象,它是另一个对象的克隆,但 URL 已更改。
有没有更好的方法?
可以使用自定义路由规划器将传出请求重新路由到不同的主机/路由
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();