2013-06-14 23 views
8

Tôi đang sử dụng Scala dispatch thư viện HTTP, phiên bản 0.10.1. Tôi yêu cầu một URL trả lại HTTP 301, chuyển hướng vĩnh viễn. Ví dụ: http://wikipedia.com trả về 301 chuyển hướng đến http://www.wikipedia.org/. Làm cách nào để tôi sử dụng công văn để nhận URL được chuyển hướng?Làm cách nào để sử dụng công cụ Scala để nhận URL được trả lại trong chuyển hướng 301?

Làm theo hướng dẫn, đây là những gì tôi đã làm.

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

Trường hợp này ném ngoại lệ "Trạng thái phản hồi không mong muốn: 301". Có lẽ tôi cần phải truy vấn giá trị r cho URL được chuyển hướng hoặc có thể chỉ định một số đối số khác với định nghĩa của nó là OK, nhưng tôi không thể tìm ra điều cần làm từ tài liệu.

+0

Dispatch đã thay đổi rất nhiều 0,8-0,9 đến 0.10, do đó bạn nên nói rõ phiên bản nào bạn' tái sử dụng. –

+0

Đã cập nhật câu hỏi gốc. Tôi đang sử dụng mới nhất và tuyệt vời nhất. –

Trả lời

11

Cấu hình asyncClient cơ bản để làm theo chuyển hướng:

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

Để có được URL được chuyển hướng:

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

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

Điều đó đã hiệu quả. Bây giờ làm cách nào để tôi nhận được URL mới thực tế http://www.wikipedia.org/ từ 'r'? –

+0

Bạn cũng có thể viết 'def redir (s: String) = {val r = Http (url)> (x => x.getHeader (" Vị trí ")); r()}' –

+0

Nếu 'setFollowRedirects' không hoạt động cho bạn, thay vào đó hãy thử 'setFollowRedirect' (không có dấu' s'). – ffriend

Các vấn đề liên quan