2011-12-18 2 views
1

리디렉션을 처리하는 스칼라에서 http 클라이언트를 찾고 있습니다. 스칼라에서 리디렉션을 처리하는 URL의 내용을 가져 오려면 어떻게해야합니까?리디렉션을 처리하는 스칼라에서 http 클라이언트를 찾고

scala.io.Source 예제를 보았지만 리디렉션을 처리하지 않습니다. 프로토콜 경우 다음

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 
) 

이 리디렉션 켜집니다 : 당신이 (장난감 예 이상 아무것도 아마 더 나은) HttpClient 같은 것을 사용하지 않으려면

+0

스칼라 전용 라이브러리를 특별히 찾고 있습니까? 여러 Java 라이브러리가 있습니다. –

+0

예, 저는 스칼라 방법을 찾고 있습니다 _. 자바에서는 아마도 jakarta commons http 클라이언트를 사용할 것입니다. http 콘텐츠를 가져올 수있는 더 많은 방법이 있습니까? –

+0

기존 스칼라 코드를 사용하고 리디렉션 처리를 추가 할 수 없습니까? –

답변

4

, 당신은 URLConnection 어설프게 수 있습니다 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가 할 수있는 모든 작업을 스칼라 방식으로 할 수 있습니다. IMO, 이상한 운영자에게는 약간 무거 우며 더 많은 것들을 외워야하지만 1 년이나 2 년 동안 사용해 왔고 그것에 관해 많은 것을 좋아합니다.

4

Finagle을 build a client으로 사용할 수 있습니다. 꽤 낮은 레벨이지만 직접적으로 HttpRequest => Future[HttpResponse] 레벨에서 작업하기 때문에 리다이렉션을 처리하기 위해서는 약간의 작업이 필요합니다.

관련 문제