Ich möchte benutzerdefinierte Header von WebView zum Server senden.WebView: Fügen Sie benutzerdefinierte Header hinzu, wenn Benutzer auf Webview-Links klicken
Meine Lösung funktioniert gut für die erste Seite geladen, funktioniert aber nicht, wenn Benutzer auf Link in WebView klicken.
Nach dem Code.
I erweitert WebView mit meinem Besitzer Klasse und overrided einige Methoden:
public class SMWebView extends WebView {
private final static HashMap<String,String> httpHeaders = new HashMap<>();
...
@Override
public void loadUrl(String url) {
super.loadUrl(url,httpHeaders);
}
@Override
public void loadUrl(String url, Map<String, String> additionalHttpHeaders) {
if(additionalHttpHeaders!=null) {
additionalHttpHeaders.putAll(httpHeaders);
super.loadUrl(url, additionalHttpHeaders);
}
else{
super.loadUrl(url, httpHeaders);
}
}
public HashMap<String,String> getHttpHeaders(){
return httpHeaders;
}
}
ich auch WebViewClient erweitert
public class SMWebViewClient extends WebViewClient {
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
android.util.Log.i("MyWebViewClient", "attempting to load resource: " + request.getUrl());
if(view.getClass().equals(SMWebView.class)){
SMWebView smWebView = (SMWebView) view;
request.getRequestHeaders().putAll(smWebView.getHttpHeaders());
request.getRequestHeaders().put("HIDE_MENU","true");
}
return super.shouldInterceptRequest(view,request);
}
}
Und ich beide in MainActivity: can
public class MainActivity extends AppCompatActivity implements DrawerMenuItem.DrawerCallBack{
@BindView(R.id.main_webview) SMWebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
webView.setWebViewClient(new SMWebViewClient());
webView.clearCache(true);
webView.clearHistory();
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.loadUrl(Constant.baseUrl + Constant.homeUrl);
}
...
}
Wie Ich sende meine benutzerdefinierten Header an jeden Request, selbst wenn ich Benutzer auf einen Link in WebView klicke?
Vielleicht fand ich den Grund dafür, dass in diesem Beitrag erklärt https://stackoverflow.com/questions/38412965 – fciri