为了访问响应头(获得特定的头值),我们必须
intercept
WebView中的HTTP请求,由我们自己执行HTTP资源的下载,并将结果作为
WebResourceResponse
实例返回。
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request)
return new WebResourceResponse("text/plain", "UTF-8", 302, ...); // 302 is invalid (not supported) value
然而,300-399之内的代码是不接受:
2019-12-02 16:48:05.710 1812-1903 W/System.err: java.lang.IllegalArgumentException: statusCode can't be in the [300, 399] range.
2019-12-02 16:48:05.712 1812-1903 W/System.err: at android.webkit.WebResourceResponse.setStatusCodeAndReasonPhrase(WebResourceResponse.java:134)
2019-12-02 16:48:05.712 1812-1903 W/System.err: at android.webkit.WebResourceResponse.<init>(WebResourceResponse.java:76)
2019-12-02 16:48:05.714 1812-1903 W/System.err: at xl.a(PG:56)
2019-12-02 16:48:05.714 1812-1903 W/System.err: at aeW.a(PG:9)
2019-12-02 16:48:05.714 1812-1903 W/System.err: at org.chromium.android_webview.AwContentsBackgroundThreadClient.shouldInterceptRequestFromNative(PG:11)
2019-12-02 16:48:05.718 1812-1903 A/chromium: [FATAL:jni_android.cc(256)] Please include Java exception stack in crash report
有什么合适的方法可以让WebView接受重定向响应吗?
PS.我能够用Java反射来解决这个问题,并将值直接注入到字段中(不是通过带有验证的ctor),但这似乎非常脆弱(尽管事实上它是有效的)。