2011-12-18 10 views
1

私は、リダイレクトを処理するスカラーでhttpクライアントを探しています。リダイレクトを処理する、スカラーのURLの内容を取得するにはどうすればよいですか?リダイレクトを処理するスカラーでhttpクライアントを探します

私はscala.io.Sourceの例を見ましたが、リダイレクトを処理しません。

+0

Scala専用ライブラリを探していますか?いくつかのJavaライブラリがあります。 –

+0

はい、私はそれにスカラーを探しています_。 Javaではおそらくjakarta commons httpクライアントを使用します。 httpコンテンツを取得するためのさらに多くの方法がありますか? –

+0

既存のScalaコードを受け取り、リダイレクト処理を追加できませんでしたか? –

答えて

4

あなたは(おそらくおもちゃの例を越えて何のために良いです)HttpClientのようなものを使用しない場合、あなたはURLConnectionといじくり回すことができます。

def urlToStream(url: String) = Source.fromInputStream(
    (new java.net.URL(url).openConnection match { 
    case connection: java.net.HttpURLConnection => { 
     connection.setInstanceFollowRedirects(true) 
     connection 
    } 
    case connection => connection 
    }).getInputStream 
) 

これはプロトコル場合は、次のリダイレクトをオンにしますHTTPです。

+0

これは、ワイド文字に出会うたびに例外をスローします。java.nio.charset.MalformedInputException:入力の長さ= 1。エンコーディングをISO-8859-1に設定すると、それは私のために機能します。 IOW、コードを}に変更します。getInputStream、 "IOS-8859-1" – Sniggerfardimungus

2

Dispatchをチェックしましたか? http://dispatch.databinder.net/Dispatch.html

これはHttpClientをラップするので、HttpClientは何でもできますが、Scalaの方法で行うことができます。 IMO、それは奇妙な演算子で少し重いですし、より多くのものを綴るべきですが、私はそれを1年か2年使っていて、それについて多くのことを好きです。

4

Finagleからbuild a clientまでご利用いただけます。それはかなり低いレベルですが、HttpRequest => Future[HttpResponse]レベルで直接作業しているので、リダイレクトを処理するには少量の作業が必要です。