2015-05-20 20 views
5

Làm cách nào để truy cập vào tiêu đề phản hồi và mã trạng thái (cùng với cookie mà tôi biết cách tải) trong web trong ứng dụng Android? Trong ứng dụng của chúng tôi, tôi cần truy cập các dữ liệu này để xác thực tùy chỉnh thông qua đăng nhập web, tương tự như OAuth nhưng cũng cần tiêu đề, v.v. Đây là điều tôi đã cho là không có vấn đề gì trong các nền tảng khác trước đây, nhưng không phải Android. Để hoàn thành, tôi đang làm tất cả những điều này thông qua thư viện trình bao bọc Xamarin.Tiêu đề phản hồi và mã trạng thái trong web trong ứng dụng Android?

Cách gần nhất tôi nhận được từ câu hỏi này: Access the http response headers in a WebView? ... nhưng đã 4 tuổi và chặn thủ công có thể không hoạt động đối với chúng tôi vì chúng tôi chỉ sử dụng URL. Tôi cũng xem xét nhắc nhở một trình duyệt nhưng nó dường như cung cấp cho kiểm soát ít hơn.

Có cách nào để đạt được điều này trong Android không?

+0

bạn có thể xây dựng tại sao "những cách chặn tay có thể không làm việc cho chúng tôi vì chúng tôi chỉ là sử dụng URL "? Câu trả lời nếu bốn tuổi nhưng dường như hoạt động, nếu bạn nhắm mục tiêu api 22 (mà tôi nghi ngờ), bạn có thể ghi đè 'shouldInterceptRequest (WebView, WebResourceRequest)'. Bạn có tiêu đề trong WebResourceRequest –

+0

Việc chặn thủ công được đề xuất trong liên kết sẽ gửi yêu cầu chỉ sử dụng URL, thiếu bất kỳ cookie, tiêu đề và nội dung có thể. –

+0

Không phải là không. Nó gợi ý rằng bạn chịu trách nhiệm cung cấp HttpRequest và HttpResponse cho một url. Bạn có toàn quyền kiểm soát, bạn có thể thiết lập đầu, cookie, nội dung và vv trong yêu cầu trước khi thực thi nó và nhận tất cả các tài nguyên cần thiết từ HttpResponse. –

Trả lời

0

WebView không cung cấp quyền truy cập vào tiêu đề phản hồi và mã trạng thái HTTP. Bạn phải sử dụng một khách hàng HTTP

private readonly HttpClient client; 
client = new HttpClient(); 

private const string Url = "Your Base Url"; 
client.BaseAddress = new Uri(Url); 

var response = await client.GetAsync(string.Format("Your Request Url")); 
     response.EnsureSuccessStatusCode(); 

     var header = response.Headers; 
     var statusCode = response.StatusCode; 
     var requestMessage = response.RequestMessage; 

Vì vậy, từ đối tượng trả lời, bạn có thể nhận được Header Đáp lại, StatusCode và tất cả những người khác

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