2015-11-02 1 views
0

Que se passe-t-il lorsque j'utilise dispatch pour effectuer une requête GET? Je peux utiliser un proxy, mais je ne peux pas utiliser un proxy qui nécessite une authentification.L'envoi échoue avec le proxy nécessitant une authentification: Connexion à distance fermée

Cela fonctionne:

val ps = new ProxyServer(host, port) 
val svc = request.setProxyServer(ps) 
val resp = Http(svc > as.String)   

Cela échoue:

val ps = new ProxyServer(host, port) 
val svc = request.setProxyServer(ps).as_!(user, pass) 
val resp = Http(svc > as.String) 

L'erreur est:

java.util.concurrent.ExecutionException: java.io.IOException: Remotely Closed 
    at com.ning.http.client.providers.netty.NettyResponseFuture.abort(NettyResponseFuture.java:342) 
    at com.ning.http.client.providers.netty.NettyAsyncHttpProvider.abort(NettyAsyncHttpProvider.java:1418) 
    at com.ning.http.client.providers.netty.NettyAsyncHttpProvider.channelClosed(NettyAsyncHttpProvider.java:1485) 
    at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:88) 
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
    at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) 
    at org.jboss.netty.handler.stream.ChunkedWriteHandler.handleUpstream(ChunkedWriteHandler.java:142) 
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
    at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) 
    at org.jboss.netty.handler.codec.replay.ReplayingDecoder.cleanup(ReplayingDecoder.java:570) 
    at org.jboss.netty.handler.codec.frame.FrameDecoder.channelClosed(FrameDecoder.java:371) 
    at org.jboss.netty.handler.codec.http.HttpClientCodec$Decoder.channelClosed(HttpClientCodec.java:221) 
    at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:88) 
    at org.jboss.netty.handler.codec.http.HttpClientCodec.handleUpstream(HttpClientCodec.java:92) 
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) 
    at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) 
    at org.jboss.netty.channel.Channels.fireChannelClosed(Channels.java:468) 
    at org.jboss.netty.channel.socket.nio.AbstractNioWorker.close(AbstractNioWorker.java:375) 
    at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:93) 
    at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108) 
    at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318) 
    at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89) 
    at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) 
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) 
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.io.IOException: Remotely Closed 

Répondre

2
val svc = request.setProxyServer(ps).as_!(user, pass) 

réglage est-il l'utilisateur et mot de passe pour la demande, et non la proxy

Vous devez instancier ProxyServer avec des informations d'utilisateur et mot de passe:

ProxyServer(String host, int port, String principal, String password) 

reference

Dans votre exemple:

val ps = new ProxyServer(host, port, user, pass) 
val svc = request.setProxyServer(ps) 
val resp = Http(svc > as.String)