• 1000 также он возвращает статус 200.
Я использую GET-запрос всеми способами.
HttpClient httpClient = HttpClient.create().tcpConfiguration(tcpClient -> {
tcpClient = tcpClient.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, this.httpConnectionTimeout * 1000);
tcpClient = tcpClient.proxy(proxy -> proxy.type(ProxyProvider.Proxy.HTTP)
.host("localhost")
.port(20003)
.build());
return tcpClient;
});
ReactorClientHttpConnector connector = new ReactorClientHttpConnector(httpClient);
WebClient.builder()
.clientConnector(connector)
.build()
.get()
.uri("http://YYY:PORT/XXX/XXX/")
.accept(MediaType.APPLICATION_JSON)
.headers(headerConsumer -> {
headerConsumer.set(HttpHeaders.AUTHORIZATION, authToken);
headerConsumer.setCacheControl(CacheControl.noCache());
headerConsumer.set("X-CSRF-token", "Fetch");
headerConsumer.set(HttpHeaders.PROXY_AUTHORIZATION, "Bearer " + bearerToken);
})
.exchange();
Ошибка, которую я получил
io.netty.handler.proxy.HttpProxyHandler$HttpProxyConnectException: http, none, localhost/127.0.0.1:20003 => YYY:PORT, status: 405 Method Not Allowed
at io.netty.handler.proxy.HttpProxyHandler.handleResponse(HttpProxyHandler.java:200) ~[netty-handler-proxy-4.1.49.Final.jar:4.1.49.Final]
at io.netty.handler.proxy.ProxyHandler.channelRead(ProxyHandler.java:258) ~[netty-handler-proxy-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) [netty-codec-4.1.49.Final.jar:4.1.49.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) [netty-codec-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.handler.proxy.HttpProxyHandler$HttpClientCodecWrapper.channelRead(HttpProxyHandler.java:272) [netty-handler-proxy-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) [netty-transport-4.1.49.Final.jar:4.1.49.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [netty-common-4.1.49.Final.jar:4.1.49.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.49.Final.jar:4.1.49.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.49.Final.jar:4.1.49.Final]
at java.lang.Thread.run(Unknown Source) [na:1.8.0_251]
Соответствующий curl будет выглядеть как
curl -L -i -x localhost:20003 http://YYY:PORT/XXX/XXX/ -H 'Accept: application/json' -u USERNAME:PASSWORD -H "Proxy-Authorization: Bearer $token" -H 'X-CSRF-token: Fetch' -H 'cache-control: no-cache'
Пока curl возвращает ответ с токеном csrf, который я ищу. Код с использованием org. apache .http.client.HttpClient, который возвращает статус 200 (Успешно)
HttpGet request = new HttpGet("http://YYY:PORT/XXX/XXX/");
request.setHeader(HttpHeaders.AUTHORIZATION, authToken);
request.setHeader("Accept", "application/json");
request.setHeader("X-CSRF-token", "Fetch");
request.setHeader("Proxy-Authorization", "Bearer " + bearerToken);
HttpHost proxy = new HttpHost("localhost", 20003, "http");
RequestConfig config = RequestConfig.custom().setProxy(proxy).setConnectTimeout(httpConnectionTimeout * 1000).setConnectionRequestTimeout(httpConnectionTimeout * 1000).setSocketTimeout(httpConnectionTimeout * 1000).build();
request.setConfig(config);
org.apache.http.client.HttpClient client = HttpClientBuilder.create().build();
HttpResponse response = client.execute(request);