2015-05-20 10 views
5

Come accedere alle intestazioni di risposta e al codice di stato (insieme ai cookie che so come ottenere) nel Web nell'app per Android?Accesso intestazione di risposta e codice di stato nel web in app Android?

Nella nostra app, ho bisogno di accedere a questi dati per un'autenticazione personalizzata tramite login web, simile a OAuth ma ho anche bisogno di intestazioni ecc. Questo è qualcosa che ho dato per scontato poiché non ho avuto problemi in altre piattaforme prima, ma non Android. Per il completamento, sto facendo tutto questo tramite le librerie di wrapper Xamarin.

Il modo più vicino ho ottenuto è da questa domanda: Access the http response headers in a WebView? ... ma è di 4 anni e l'intercettazione manuale potrebbe non funzionare per noi come stiamo solo utilizzando l'URL. Considero anche la richiesta di un browser, ma sembra che dia ancora meno controllo.

C'è un modo per ottenere questo in Android?

+0

Puoi dirci perché "l'intercettazione manuale potrebbe non funzionare per noi come noi siamo solo usando l'URL "? La risposta se di quattro anni, ma sembra funzionare, se si mira api 22 (che dubito) è possibile sovrascrivere 'shouldInterceptRequest (WebView, WebResourceRequest)'. Hai l'intestazione in WebResourceRequest –

+0

L'intercettazione manuale suggerita nel link invierebbe una richiesta utilizzando solo l'URL, mancante di cookie, intestazioni e possibilmente del corpo. –

+0

Non è così. È suggerito che sei responsabile di fornire a HttpRequest e HttpResponse un URL. Hai il controllo totale di quelli, puoi impostare head, cookie, body ed ecc nella richiesta prima di eseguirla e ottenere tutte le risorse necessarie da HttpResponse. –

risposta

0

WebView non fornisce accesso alle intestazioni di risposta e al codice di stato HTTP. È necessario utilizzare un client 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; 

Così dall'oggetto risposta si può ottenere l'intestazione della risposta, StatusCode e tutti gli altri

Problemi correlati