我想执行(在的IntelliJ IDE或SBT命令行)从后面代理这个很基本的调度片段:
import dispatch._
val svc = url("http://api.hostip.info/country.php")
val country = Http(svc > as.String)
println(country())
和所有我能得到的是一个例外:
java.net.ConnectException: Connection timed out: no further information to
http://api.hostip.info/country.php java.util.concurrent.ExecutionException:
java.net.ConnectException: Connection timed out: no further information
to http://api.hostip.info/country.php
我没有确凿的结果试图设置通常VM参数: -Dhttp.proxyHost=
_my_proxy_host_ -Dhttp.proxyPort=80
,仍然得到了同样的异常。
在另一方面,下面的代码片段也工作得很好:
import dispatch._
val svc = url("http://api.hostip.info/country.php") setProxyServer(new com.ning.http.client.ProxyServer(myproxyhost,80))
val country = Http(svc > as.String)
println(country())
因为它似乎并不十分美观,也不斯卡拉十岁上下,不知是否是真的是我应该在这种情况下做的。
任何帮助将受到欢迎,在此先感谢。
http.proxyHost
并http.proxyPort
如果你设置这个参数的使用方式:
-Dcom.ning.http.client.AsyncHttpClientConfig.useProxyProperties=true
Additionaly有参数:
-Dcom.ning.http.client.AsyncHttpClientConfig.proxy.user=user
-Dcom.ning.http.client.AsyncHttpClientConfig.proxy.password=password
-Dcom.ning.http.client.AsyncHttpClientConfig.proxy.protocol=NTLM
看起来像我的问题是不是很令人振奋。
我做的皮条客我的图书馆的风格有点exercie:
package dispatch
package object ext {
import com.ning.http.client.ProxyServer
class DefaultPoxyVerbs(override val subject: Req) extends ProxyVerbs
object NoProxy extends ProxyServer("",0)
object Proxy {
def apply(host: String,port: Int) = new ProxyServer(host,port)
}
trait ProxyVerbs extends RequestVerbs {
def through(proxy : ProxyServer) =
if (NoProxy == proxy) subject else subject.setProxyServer(proxy)
def ||>(proxy : ProxyServer) = through(proxy)
}
implicit def implyProxyVerbs(builder: Req) =
new DefaultPoxyVerbs(builder)
}
现在我可以这样写:
import dispatch._
import dispatch.ext._
val svc = url("http://api.hostip.info/country.php") through Proxy("blah blah blah",80)
val country = Http(svc > as.String)
println(country())
这是一点点的眼睛赏心悦目的和连贯的关于派遣API风格。
虽然这是一个有趣的练习,我还是不知道现在如果我最初使用API,我应该的方式也不知道为什么设置http.proxyHost
和http.proxyPort
属性没有工作,因为它似乎对工作人 。