Вы можете создать WebViewClient для выполнения запроса с клиентом, который позволяет вам выполнять запросы и анализировать заголовки, например, Volley:
private WebViewClient getWebViewClient() {
return new WebViewClient() {
@Override
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public boolean shouldOverrideUrlLoading(final android.webkit.WebView view, WebResourceRequest request) {
android.util.Log.d("Headers", "New request: " + request);
if (request.getRequestHeaders() != null) {
for (Map.Entry<java.lang.String, java.lang.String> entry : request.getRequestHeaders().entrySet()) {
android.util.Log.d("Headers", "Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
}
doVolleyRequest(view, request.getUrl().toString());
return true;
}
@Override
public boolean shouldOverrideUrlLoading(android.webkit.WebView view, String url) {
android.util.Log.d("Headers", "New url: " + url);
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.d("onPageStarted", url);
}
};
}
private void doVolleyRequest(final WebView webView, String url) {
StringRequest getRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// response
Log.d("Response", response);
webView.loadDataWithBaseURL(null, response, "text/html", "utf-8", null);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// error
Log.d("Error.Response", error.getLocalizedMessage());
}
}
) {
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
Map<String, String> responseHeaders = response.headers;
if (responseHeaders != null) {
for (Map.Entry<java.lang.String, java.lang.String> entry : responseHeaders.entrySet()) {
android.util.Log.d("Headers", "Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
}
return super.parseNetworkResponse(response);
}
};
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
queue.add(getRequest);
}
И назначать его веб-представлению перед загрузкой URL:
WebView webView = (WebView) findViewById(R.id.webview);
webView.setWebViewClient(getWebViewClient());
String url = "https://***********";
doVolleyRequest(webView, url); // webView.loadUrl(url);
Имейте в виду, что вам нужно добавить залп к зависимостям gradle:
implementation 'com.android.volley:volley:1.1.1'
Переопределением метода shouldOverrideUrlLoading()
регистрируется заголовок запроса и назначается ответ html на веб-просмотр, чтобы веб-просмотр не выполнял саму загрузку URL.