Wie sehe ich, request-Header, die auf Android-WebView-Anfragen?
Wie kann ich abfangen, alle Anfragen aus einer Android - WebView
und Holen Sie sich die entsprechenden request-Header? Den will ich sehen-Header für jeden request aus meinem WebView
einschließlich XHRs, Skript Quellen, css, etc.
Entspricht bei iOS ist das überschreiben NSURLCache
die Ihnen all diese Informationen. Die folgenden sind wahrscheinlich die am nächsten an das, was ich will, aber soweit ich sehen kann WebViewClient
immer nur gibt Sie uns zurück strings:
void onLoadResource(WebView view, String url);
WebResourceResponse shouldInterceptRequest(WebView view, String url);
- Das Lesen der Anfrage-Header ist nicht möglich, mit Android
WebView
oderWebViewClient
, afaik. Ich löste dieses problem mit einer leichten proxy. - hast du einen proxy-programmatisch auf die
WebView
oder externe (router/Netzwerk-Ebene)? - Ich habe die Konfiguration in Mobile Netzwerke in den Einstellungen des Gerätes. Andere Möglichkeit: Wenn ich nur ein quick-and-dirty-Methode zu überprüfen, den Header werde ich beginnen, eine Instanz von netcat (
nc
) auf meinem laptop und verbinden Sie denWebView
an die netcat-Instanz. - Wenn ich das richtig verstanden keine dieser Lösungen ist geeignet für die Produktion Bereitstellung, wenn ich brauche, um diese Header, die während der regelmäßig ausgeführt wird, für Benutzer, richtig?
- Richtig. Für regelmäßig läuft, ist es möglich zu konfigurieren, einen proxy-Programmierung mit Hilfe von Reflexion (Beispiel), aber solch ein Ansatz ist zerbrechlich und nicht unterstützt.
- Eigentliche Antwort sollte sein, dass ab Android 5.0 kann man mit der neuen API-Methode
WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request)
, wo dierequest
parameter stellt die gewünschte info.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Deine Frage klingt sehr ähnlich wie diese eine, so dass die sofortige und eindeutige Antwort ist, dass es nicht möglich ist, zum Lesen der Anfrage-Header auf die Android WebView oder WebViewClient.
Gibt es workarounds, die aber, die ermöglichen kann, dass Sie bekommen, was Sie brauchen. Diese Antwort beschreibt im detail, wie dies zu tun.
Durch auf diese Weise Sie können den Debugger für web-Anwendungen anzeigen und verwenden von Chrome Developer Tools, die Einzelheiten Ihrer Anfragen, Antworten, css, Javascripte, etc
Ich hatte auch einige Probleme mit dem abfangen des request-Header in
WebView myWebView
.Zuerst habe ich versucht, dies zu tun mit der Einstellung benutzerdefinierte
WebViewClient
fürmyWebView
.Aber die Methode
shouldOverrideUrlLoading(...)
nie genannt wurde. Und ich habe wirklich keine Idee, warum.Dann habe ich festgestellt, dass es die Art und Weise abzufangen, einige Allgemeine überschriften wie
"User-Agent"
,"Cache-Control"
etc.:Hoffe es kann jemand helfen.