下面列出了android.webkit.WebResourceRequest#getRequestHeaders ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public WebResourceResponse getResource(WebResourceRequest webResourceRequest, int cacheMode, String userAgent) {
if (mFastCacheMode == FastCacheMode.DEFAULT) {
throw new IllegalStateException("an error occurred.");
}
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
String url = webResourceRequest.getUrl().toString();
String extension = MimeTypeMapUtils.getFileExtensionFromUrl(url);
String mimeType = MimeTypeMapUtils.getMimeTypeFromExtension(extension);
CacheRequest cacheRequest = new CacheRequest();
cacheRequest.setUrl(url);
cacheRequest.setMime(mimeType);
cacheRequest.setForceMode(mFastCacheMode == FastCacheMode.FORCE);
cacheRequest.setUserAgent(userAgent);
cacheRequest.setWebViewCacheMode(cacheMode);
Map<String, String> headers = webResourceRequest.getRequestHeaders();
cacheRequest.setHeaders(headers);
return getOfflineServer().get(cacheRequest);
}
throw new IllegalStateException("an error occurred.");
}
/**
* call this method in {@link android.webkit.WebViewClient#shouldInterceptRequest(WebView, WebResourceRequest)}
*
* @param request the web res request
* @return
*/
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public WebResourceResponse interceptWebResRequest(WebResourceRequest request) {
String url = request.getUrl().toString();
Map<String, String> headers = request.getRequestHeaders();
return interceptWebResRequest(url, headers);
}
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
if (request == null) {
return null;
}
if (!request.getMethod().equalsIgnoreCase("GET") || !request.isForMainFrame()) {
if (request.getMethod().equalsIgnoreCase("GET")
&& (request.getUrl().toString().contains(".js")
|| request.getUrl().toString().contains("json")
|| request.getUrl().toString().contains("css"))) {
synchronized (lock) {
if (!isInjected) {
injectScriptFile(view);
isInjected = true;
}
}
}
super.shouldInterceptRequest(view, request);
return null;
}
HttpUrl httpUrl = HttpUrl.parse(request.getUrl().toString());
if (httpUrl == null) {
return null;
}
Map<String, String> headers = request.getRequestHeaders();
JsInjectorResponse response;
try {
response = jsInjectorClient.loadUrl(httpUrl.toString(), headers);
} catch (Exception ex) {
return null;
}
if (response == null || response.isRedirect) {
return null;
} else {
ByteArrayInputStream inputStream = new ByteArrayInputStream(response.data.getBytes());
WebResourceResponse webResourceResponse = new WebResourceResponse(
response.mime, response.charset, inputStream);
synchronized (lock) {
isInjected = true;
}
return webResourceResponse;
}
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
if (request == null) {
return null;
}
if (!request.getMethod().equalsIgnoreCase("GET") || !request.isForMainFrame()) {
if (request.getMethod().equalsIgnoreCase("GET")
&& (request.getUrl().toString().contains(".js")
|| request.getUrl().toString().contains("json")
|| request.getUrl().toString().contains("css"))) {
synchronized (lock) {
if (!isInjected) {
injectScriptFile(view);
isInjected = true;
}
}
}
super.shouldInterceptRequest(view, request);
return null;
}
//check for known extensions
if (handleTrustedExtension(request.getUrl().toString()))
{
return null;
}
HttpUrl httpUrl = HttpUrl.parse(request.getUrl().toString());
if (httpUrl == null) {
return null;
}
Map<String, String> headers = request.getRequestHeaders();
JsInjectorResponse response;
try {
response = jsInjectorClient.loadUrl(httpUrl.toString(), headers);
} catch (Exception ex) {
return null;
}
if (response == null || response.isRedirect) {
return null;
} else if (TextUtils.isEmpty(response.data)){
return null;
} else {
ByteArrayInputStream inputStream = new ByteArrayInputStream(response.data.getBytes());
WebResourceResponse webResourceResponse = new WebResourceResponse(
response.mime, response.charset, inputStream);
synchronized (lock) {
isInjected = true;
}
return webResourceResponse;
}
}