4

我希望有人以前遇到过这种情况并可以指出我正确的方向。我们正在使用 application.conf 中的代理设置(http.proxyHost、http.proxyPort 和 http.nonProxyHosts),只要请求的 url 是 http,它们似乎就可以正常工作。如果我们将主机添加到 nonProxyHosts 列表,并使用 https 向该主机发出请求,它就不起作用(示例代码和堆栈跟踪)。如果我们删除 nonProxyHosts 列表,请求就可以正常工作,只是它随后会通过代理。无论主机是否在 nonProxyHosts 列表中,使用 http 的请求都可以正常工作。

任何帮助,将不胜感激。

示例代码

public static void google()
{
    try
    {
        renderHtml(WS.url("https://www.google.com").get().getString());
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

当 http.nonProxyHosts=www.google.com 并且请求为 https 时发生的堆栈跟踪:java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.io.IOException: Remotely Closed [id: 0x01f42269, /10.0.1.100 :56663 :> www.google.com/74.125.129.104:443] at play.libs.ws.WSAsync$WSAsyncRequest.get(WSAsync.java:223) at controllers.api.ContentAPI.google(ContentAPI.java:86)在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method .invoke(Method.java:597) 在 play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:557) 在 play.mvc.ActionInvoker.invoke(ActionInvoker.java:508) 在 play.mvc。在 play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:479) 在 play.mvc.ActionInvoker.invoke(ActionInvoker.java:161) 在 play.server.PlayHandler$NettyInvocation.execute 的 ActionInvoker.invokeControllerMethod(ActionInvoker.java:484) (PlayHandler.java:251) 在 play.Invoker$Invocation.run(Invoker.java:278) 在 play.server.PlayHandler$NettyInvocation.run(PlayHandler.java:229) 在 java.util.concurrent.Executors$RunnableAdapter。在 java.util.concurrent.FutureTask.run(FutureTask.java:138) 在 java.util.concurrent 调用 (Executors.java:439) 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) .ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 在 java.lang.Thread.run(Thread .java:680) 引起:java.util.concurrent.ExecutionException: java.io.IOException: Remotely Closed [id: 0x01f42269, /10.0.1.100:56663 :> www.google.com/74.125.129.104:443] 在com.ning.http.client.providers.netty.NettyResponseFuture.abort(NettyResponseFuture.java:297) 在 com.ning.http.client.providers.netty.NettyAsyncHttpProvider.abort(NettyAsyncHttpProvider.java:1321) 在 com.ning。 http.client.providers.netty.NettyAsyncHttpProvider.channelClosed(NettyAsyncHttpProvider.java:1384) 在 org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:93) 在 org.jboss.netty.channel。DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:792) at org.jboss.netty.handler.stream.ChunkedWriteHandler.handleUpstream(ChunkedWriteHandler.java: 145) 在 org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:792) 在 org.jboss.netty.handler 的 org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) .codec.replay.ReplayingDecoder.cleanup(ReplayingDecoder.java:636) at org.jboss.netty.handler.codec.replay.ReplayingDecoder.channelClosed(ReplayingDecoder.java:533) at org.jboss.netty.handler.codec.http .HttpClientCodec$Decoder.channelClosed(HttpClientCodec.java:218) 在 org.jboss.netty。channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:93) at org.jboss.netty.handler.codec.http.HttpClientCodec.handleUpstream(HttpClientCodec.java:92) at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline. java:564) 在 org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) 在 org.jboss.netty.channel.Channels.fireChannelClosed(Channels.java:476) 在 org.jboss.netty.channel .socket.nio.AbstractNioWorker.close(AbstractNioWorker.java:631) 在 org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:101) 在 org.jboss.netty.channel.socket.nio .AbstractNioWorker.processSelectedKeys(AbstractNioWorker.java:372) 在 org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:246) 在 org.jboss.netty。channel.socket.nio.NioWorker.run(NioWorker.java:38) at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102) at org.jboss.netty.util.internal.DeadLockProofWorker$1.run (DeadLockProofWorker.java:42) ... 3 更多原因:java.io.IOException: 远程关闭 [id: 0x01f42269, /10.0.1.100:56663 :> www.google.com/74.125.129.104:443] .. . 25 更多

4

0 回答 0