2013-06-14 29 views
8

Scala dispatch HTTP kitaplığı, sürüm 0.10.1 kullanıyorum. HTTP 301, kalıcı yönlendirme döndüren bir URL için istekte bulunuyorum. Örneğin, http://wikipedia.com, http://www.wikipedia.org/'a yönlendiren bir 301 döndürür. Yeniden yönlendirilen URL'yi almak için gönderimi nasıl kullanırım?301 yönlendirmesinde döndürülen URL'yi almak için Scala gönderimini nasıl kullanırım?

Eğiticiyi izledikten sonra, burada yaptığım şey.

import dispatch._, Defaults._ 
val svc = url("http://wikipedia.com") 
val r = Http(svc OK as.String) 
r() 

Bu, "Beklenmeyen yanıt durumu: 301" istisnası atar. Muhtemelen, yeniden yönlendirilen URL için r değerini sorgulamanız veya tanımında OK dışında bir argüman belirtmem gerekiyor, ancak belgelerinizden ne yapacağımı anlayamıyorum.

+0

Sevk böylece 'hangi sürüm sizi belirtmelidir 0,10 ila 0,9 0,8 çok şey değişti:

val r = Http.configure(_ setFollowRedirects true)(svc OK as.String) 

yönlendirilen URL'yi almak için kullanıyor. –

+0

Özgün soru güncellendi. En son ve en iyiyi kullanıyorum. –

cevap

11

yapılandır yönlendirmeleri takip yatan asyncClient:

val svc = url("http://wikipedia.com/") 
val r = Http(svc > (x => x)) 
val res = r() 

println(res.getHeader("Location")) 
+0

Bu işe yaradı. Şimdi, gerçek yeni URL’yi http://www.wikipedia.org/’dan r’den nasıl edinebilirim? –

+0

Ayrıca 'def yeniden yönlendirme (s: String) = {val r = Http (url (s)> (x => x.getHeader (" Yer "))))); r()}' –

+0

'setFollowRedirects' Senin için çalışmadı, yerine setFollowRedirect ('s' 'nin sonuna kadar)' ı deneyin. – ffriend