Dmitriy (hoặc những người khác tìm kiếm một giải pháp có thể) nếu một trang html xuất hiện trong tệp đã tải xuống của bạn, tôi nghi ngờ điều này là do vấn đề GET HttpRequest kép. Một kịch bản điển hình là sau POST, Redirect, GET mô hình:
trình duyệt Android đưa ra một HttpRequest POST đến máy chủ (ví dụ như nút hoặc liên kết trình yêu cầu một tập tin tải về, filename.ext nói)
Máy chủ truyền tệp yêu cầu filename.ext tới byte, lưu trữ trong biến phiên, sau đó phát hành Response.Redirect đến Download.aspx, ví dụ, để xử lý việc xây dựng đối tượng phản hồi
Trình duyệt Android gửi đúng HttpRequest GET tới máy chủ cho Download.aspx
Máy chủ phản hồi với Nội dung điển hình: Bố trí; filename = "filename.ext" tạo kiểu với đối tượng phản hồi chứa filename.ext được yêu cầu, là các byte trong biến phiên.
Trình quản lý tải xuống Android, tôi tin, sau đó gửi một HttpRequest GET khác đến máy chủ cho Download.aspx. Tôi nghi ngờ rằng trình quản lý tải xuống diễn giải phản hồi "tệp đính kèm" trước đó làm trình kích hoạt để gửi lần truy cập thứ hai này.
Máy chủ (Download.aspx) lại cố gắng xây dựng đối tượng phản hồi để gửi lại trình duyệt.
Tải xuống trình quản lý tải xuống Android filename.ext, sử dụng nội dung đối tượng phản hồi từ tệp Download.aspx thứ hai.
Trong nhiều trường hợp, điều này sẽ ổn. Nhưng nếu, ví dụ, máy chủ trong mã Download.aspx làm một số vệ sinh và loại bỏ biến phiên lần đầu tiên nó được gọi, sau đó thời gian tiếp theo xung quanh không có biến phiên. Vì vậy, tùy thuộc vào cách mã được viết nó có thể là đối tượng phản ứng không nhận được explicity xây dựng và có thể là Response.End không nhận được gọi là và do đó chỉ có Download.aspx của html kết thúc được gửi.
Đây là những gì chúng tôi đã phát hiện bằng Wireshark, mặc dù tôi thừa nhận rằng tôi cho rằng đó là trình quản lý tải xuống Android là nguyên nhân của GET kép.
Tôi hy vọng giải thích này đã được một số trợ giúp.
Xin chào George, tôi đang sử dụng kỹ thuật tương tự để tạo ra một liên kết tải về nhưng tôi đã không nhận được như thế nào chúng ta có thể thiết lập "tiêu đề HTTP" khi chuẩn bị một liên kết downlink cho một neo nhãn? bạn có thể giải thích thêm về điều này không? – nrsharma
Đặt tiêu đề HTTP được thực hiện phía máy chủ trên máy chủ web, thường sử dụng ngôn ngữ lập trình như PHP, Java, CGI, v.v. Bạn đang phân phối tệp của mình như thế nào để tải xuống? –
Xin lưu ý đây là một bài đăng cũ hơn đề cập đến một số phiên bản Android cũ hơn và có thể có thông tin lỗi thời. Nội dung-Bố trí thường được sử dụng để cho biết tải xuống được yêu cầu, thay vì chỉ 'xem'. –