Playframework Play Framework 1.2.5中带有https请求的http.NoProxyHosts
我希望以前有人遇到过这种情况,能给我指出正确的方向。我们正在使用application.conf中的代理设置(http.proxyHost、http.proxyPort和http.nonProxyHosts),只要请求的url是http,它们就可以正常工作。如果我们将一个主机添加到非ProxyHosts列表中,并使用https向该主机发出请求,则该请求无效(下面是示例代码和堆栈跟踪)。如果我们删除nonProxyHosts列表,请求就可以正常工作,除非它随后通过代理。无论主机是否在非代理主机列表中,使用http的请求都可以正常工作 任何帮助都将不胜感激 示例代码Playframework Play Framework 1.2.5中带有https请求的http.NoProxyHosts,playframework,Playframework,我希望以前有人遇到过这种情况,能给我指出正确的方向。我们正在使用application.conf中的代理设置(http.proxyHost、http.proxyPort和http.nonProxyHosts),只要请求的url是http,它们就可以正常工作。如果我们将一个主机添加到非ProxyHosts列表中,并使用https向该主机发出请求,则该请求无效(下面是示例代码和堆栈跟踪)。如果我们删除nonProxyHosts列表,请求就可以正常工作,除非它随后通过代理。无论主机是否在非代理主机列表
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:远程关闭[id:0x01F4269,/10.0.1.100:56663:>www.google.com/74.125.129.104:443]
at play.libs.ws.WSAsync$WSAsyncRequest.get(WSAsync.java:223)
位于controllers.api.ContentAPI.google(ContentAPI.java:86)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
atplay.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:557)
atplay.mvc.ActionInvoker.invoke(ActionInvoker.java:508)
atplay.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:484)
atplay.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:479)
atplay.mvc.ActionInvoker.invoke(ActionInvoker.java:161)
在play.server.PlayHandler$NettyInvocation.execute(PlayHandler.java:251)
Invoker$Invocation.run(Invoker.java:278)
在play.server.PlayHandler$NettyInvocation.run(PlayHandler.java:229)
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
位于java.util.concurrent.FutureTask.run(FutureTask.java:138)
位于java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
位于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)
运行(Thread.java:680)
原因:java.util.concurrent.ExecutionException:java.io.IOException:远程关闭[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.nettysynchuttprovider.channelClosed(nettysynchuttprovider.java:1384)
位于org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:93)
位于org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
位于org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:792)
位于org.jboss.netty.handler.stream.ChunkedWriteHandler.handleUpstream(ChunkedWriteHandler.java:145)
位于org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
位于org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:792)
位于org.jboss.netty.handler.codec.replay.ReplayingDecoder.cleanup(ReplayingDecoder.java:636)
位于org.jboss.netty.handler.codec.replay.ReplayingDecoder.channelClosed(ReplayingDecoder.java:533)
位于org.jboss.netty.handler.codec.http.HttpClientCodec$Decoder.channelClosed(HttpClientCodec.java:218)
位于org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:93)
位于org.jboss.netty.handler.codec.http.HttpClientCodec.handleUpstream(HttpClientCodec.java:92)
位于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.niower.read(niower.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.niower.run(niower.java:38)
位于org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
位于org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
... 3个以上
原因:java.io.IOException:远程关闭[id:0x01F4269,/10.0.1.100:56663:>www.google.com/74.125.129.104:443]
... 还有25个我找到了一个仍然打开的问题:这个问题稍微相似,只是我使用WS.url(…).get()进行https连接没有问题,除非主机是http.nonProxyHosts列表。