众所周知,当你点击一个超链接进行跳转时,WebView会自动将当前地址作为Referer(引荐)发给服务器,因此很多服务器端程序通过是否包含referer来控制盗链,所以有些时候,直接输入一个网络地址,可能有问题,那么怎么解决盗链控制问题呢,其实在webview加载时加入一个referer就可以了,如何添加呢?Y8iHTML5中文学习网 - HTML5先行者学习网
从Android 2.2 (也就是API 8)开始,WebView新增加了一个接口方法,就是为了便于我们加载网页时又想发送其他的HTTP头信息的。Y8iHTML5中文学习网 - HTML5先行者学习网
Y8iHTML5中文学习网 - HTML5先行者学习网
public void loadUrl (String url, Map<String, String> additionalHttpHeaders)Y8iHTML5中文学习网 - HTML5先行者学习网
Added in API level 8Y8iHTML5中文学习网 - HTML5先行者学习网
Loads the given URL with the specified additional HTTP headers.Y8iHTML5中文学习网 - HTML5先行者学习网
ParametersY8iHTML5中文学习网 - HTML5先行者学习网
url the URL of the resource to loadY8iHTML5中文学习网 - HTML5先行者学习网
additionalHttpHeaders the additional headers to be used in the HTTP request for this URL, specified as a map from name to value. Note that if this map contains any of the headers that are set by default by this WebView, such as those controlling caching, accept types or the User-Agent, their values may be overriden by this WebView's defaults.Y8iHTML5中文学习网 - HTML5先行者学习网
Y8iHTML5中文学习网 - HTML5先行者学习网以下是一个简单的demo,来展示以下如何使用。Y8iHTML5中文学习网 - HTML5先行者学习网
Y8iHTML5中文学习网 - HTML5先行者学习网
public void testLoadURLWithHTTPHeaders() {Y8iHTML5中文学习网 - HTML5先行者学习网
final String url = "http://jb51.net";Y8iHTML5中文学习网 - HTML5先行者学习网
WebView webView = new WebView(getActivity());Y8iHTML5中文学习网 - HTML5先行者学习网
Map<String,String> extraHeaders = new HashMap<String, String>();Y8iHTML5中文学习网 - HTML5先行者学习网
extraHeaders.put("Referer", "http://www.google.com");Y8iHTML5中文学习网 - HTML5先行者学习网
webView.loadUrl(url, extraHeaders);Y8iHTML5中文学习网 - HTML5先行者学习网
}Y8iHTML5中文学习网 - HTML5先行者学习网
Y8iHTML5中文学习网 - HTML5先行者学习网同样上面也可以应用到UserAgent等其他HTTP头信息。Y8iHTML5中文学习网 - HTML5先行者学习网