6

私は(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())

見た目もスカラっぽくもないので、そんな時は本当にそういうことなのかしら。

よろしくお願いします。

4

2 に答える 2

9

http.proxyHostこのパラメータを設定するとhttp.proxyPort使用されます。

-Dcom.ning.http.client.AsyncHttpClientConfig.useProxyProperties=true

さらに、パラメータがあります:

-Dcom.ning.http.client.AsyncHttpClientConfig.proxy.user=user
-Dcom.ning.http.client.AsyncHttpClientConfig.proxy.password=password
-Dcom.ning.http.client.AsyncHttpClientConfig.proxy.protocol=NTLM
于 2013-01-22T10:51:19.573 に答える
4

私の質問はあまり刺激的ではなかったようです。

私は私のライブラリスタイルのポン引きで少し練習しました:

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ん。

于 2013-01-11T13:30:22.210 に答える