2011-12-18 18 views
1

我正在尋找scala中的一個處理重定向的http客戶端。如何在scala中獲取Url的內容,處理重定向?在scala中尋找一個處理重定向的http客戶端

我看到了scala.io.Source示例,但它們不處理重定向。

+0

您是否正在尋找一個僅限Scala的庫?有幾個Java庫。 – 2011-12-18 20:04:54

+0

是的,我正在尋找_斯卡拉way_到它。在Java中,我可能會使用jakarta commons http client。有更多的scala方法來獲取http內容嗎? – 2011-12-18 20:07:39

+0

難道你不能只拿現有的Scala代碼並添加重定向處理? – 2011-12-18 20:08:43

回答

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 2014-10-01 18:16:20

2

您是否檢出調度? http://dispatch.databinder.net/Dispatch.html

它包裝HttpClient,所以你可以做任何HttpClient可以做的事情,但以Scala的方式。國際海事組織,對奇怪的操作員來說有點沉重,應該拼出更多的東西,但我一直在使用它一兩年,並喜歡許多事情。

4

您可以使用Finagle至build a client。這是相當低級的,直接在HttpRequest => Future[HttpResponse]級別上工作,所以它需要少量的工作來處理重定向。