2012-06-07 29 views
8

Tôi đang sử dụng API android DownloadManager để tải xuống tệp từ máy chủ của trường học của tôi. Tôi có quyền truy cập các tệp này bằng thông tin đăng nhập, nhưng những gì tôi chưa thể tìm ra là cách gửi cookie với số DownloadManager.Request Mã tải xuống dưới đây. dm là toàn cầu DownloadManagerurl là tập lệnh tải xuống php chuyển hướng tới tệp, thường là pdf/doc/v.v.Có thể gửi cookie trong Android DownloadManager

Điều này làm việc tốt, nhưng tôi tải xuống tệp html, trang đăng nhập của trang web của trường tôi. Rõ ràng tôi cần phải gửi cookie phiên của người dùng bằng cách nào đó, nhưng tôi không thể thấy bất kỳ cách nào để thực hiện điều này trong tài liệu.

Trả lời

18

Cookie được gửi qua tiêu đề HTTP (có tên, đủ thích hợp, "Cookie") và may mắn thay, DownloadManager.Request has a method để thêm tiêu đề của riêng bạn.

Vì vậy, những gì bạn muốn làm là một cái gì đó như thế này:

Request request = new Request(Uri.parse(url)); 
request.addRequestHeader("Cookie", "contents"); 
dm.enqueue(request); 

Bạn sẽ phải thay thế "nội dung" với những nội dung Cookie thực tế, tất nhiên. Lớp CookieManager sẽ hữu ích khi lấy cookie hiện tại cho trang web, nhưng nếu không thành công, một tùy chọn khác là để ứng dụng của bạn thực hiện yêu cầu đăng nhập và lấy cookie được trả về.

+3

Điều đó hoạt động hoàn hảo. Tôi đã quản lý cookie theo cách thủ công trong một 'Bản đồ ' do đó nó đơn giản như định dạng như 'KEY1 = VALUE1; KEY2 = VALUE2;' và chuyển nó đến hàm bạn đã đề cập. Cảm ơn! – Logiraptor

+0

Điều này chỉ là hoàn hảo - được xuống một vài con đường khác nhưng điều này đóng đinh nó! Tôi lấy cookie từ onPageFinished bằng cách gọi "CookieManager.getInstance(). GetCookie (url);" và sau đó tôi có thể sử dụng kết quả trực tiếp dưới dạng giá trị Cookie! – slott

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