相关疑难解决方法(0)

向WebView资源请求添加自定义标头 - android

我需要为来自WebView的每个请求添加自定义标头.我知道loadURL有参数extraHeaders,但这些只适用于初始请求.所有后续请求都不包含标头.我查看了所有覆盖内容WebViewClient,但没有任何内容允许向资源请求添加标头 - onLoadResource(WebView view, String url).任何帮助都会很精彩.

谢谢,雷

java android webkit android-webview

85
推荐指数
6
解决办法
10万
查看次数

Android:WebView shouldInterceptRequest不在WebView中添加RequestProperties

我正在使用shouldInterceptRequest拦截来自webview的请求

下面是我返回WebResourceResponse的代码

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
    private static WebResourceResponse handleRequestViaUrlOnly(WebResourceRequest webResourceRequest){
        String url = webResourceRequest.getUrl().toString();
        Log.i("intercepting req....!!!", url);
        String ext = MimeTypeMap.getFileExtensionFromUrl(url);
        String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext);

        try {
            HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
            conn.setRequestProperty("Sample-Header", "hello");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setUseCaches(false);
            return new WebResourceResponse(mime, "UTF-8", conn.getInputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }
Run Code Online (Sandbox Code Playgroud)

我在CustomWebViewClient中调用此方法

class CustomWebViewClient extends WebViewClient {

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
        return handleRequestViaUrlOnly(request);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我在chrome:// inspect /#devices中检查来自WebView远程调试器的请求标头时.

我添加的附加RequestProperty不存在.

conn.setRequestProperty("Sample-Header", "hello");
Run Code Online (Sandbox Code Playgroud)

WebView中的请求标头中不存在Sample-Header.

我错过了什么吗?我会感激任何帮助.

android webview android-webview

6
推荐指数
1
解决办法
1721
查看次数

标签 统计

android ×2

android-webview ×2

java ×1

webkit ×1

webview ×1