2015-05-20 4 views
5

Wie kann ich auf Antwortheader und Statuscode (zusammen mit Cookies, die ich weiß, wie ich es bekomme) im Web in der Android App zugreifen?Zugriff Antwort Header und Statuscode im Web in Android App?

In unserer App muss ich auf diese Daten zugreifen für eine benutzerdefinierte Authentifizierung über Web-Login, ähnlich wie OAuth, aber auch Header etc. Das ist etwas, das ich für selbstverständlich hielt, da ich vorher keine Probleme mit anderen Plattformen hatte nicht Android. Zum Abschluss mache ich all dies über Xamarin-Wrapper-Bibliotheken.

Der nächste Weg bekam ich ist von dieser Frage: Access the http response headers in a WebView? ... aber es ist 4 Jahre alt und die manuelle Abfangvorrichtung für uns möglicherweise nicht, wie wir sind nur die URL. Ich denke auch über einen Browser nach, aber es scheint noch weniger Kontrolle zu geben.

Gibt es eine Möglichkeit, dies in Android zu erreichen?

+0

Können Sie das näher erläutern, warum „die manuelle Abfangvorrichtung für uns möglicherweise nicht, wie wir nur sind mit der URL "? Die Antwort, wenn vier Jahre alt, aber scheint zu arbeiten, wenn Sie auf API 22 (die ich bezweifle), können Sie 'sentInterceptRequest (WebView, WebResourceRequest)' überschreiben. Sie haben die Kopfzeile in der WebResourceRequest –

+0

Die manuelle Abhebung, die in der Verknüpfung vorgeschlagen wird, würde eine Anfrage senden, die nur die URL verwendet und keine Cookies, Header und möglicherweise Körper enthält. –

+0

Nicht, dass es nicht. Es wird vorgeschlagen, dass Sie dafür verantwortlich sind, die HttpRequest- und HttpResponse-URLs anzugeben. Sie haben die totale Kontrolle über diese, Sie können Kopf, Cookies, Körper und usw. in der Anfrage festlegen, bevor Sie es ausführen und alle notwendigen Ressourcen von der HttpResponse erhalten. –

Antwort

0

WebView bietet keinen Zugriff auf Antwortheader und HTTP-Statuscode. Sie haben einen HTTP-Client

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; 

So aus dem Response-Objekt verwenden Sie die Antwort-Header zu bekommen, Statuscode und alle anderen

Verwandte Themen