Android中Webview打开网页的同时发送HTTP头信息方法
众所周知,当你点击一个超链接进行跳转时,WebView会自动将当前地址作为Referer(引荐)发给服务器,因此很多服务器端程序通过是否包含referer来控制盗链,所以有些时候,直接输入一个网络地址,可能有问题,那么怎么解决盗链控制问题呢,其实在webview加载时加入一个referer就可以了,如何添加呢?
从Android2.2(也就是API8)开始,WebView新增加了一个接口方法,就是为了便于我们加载网页时又想发送其他的HTTP头信息的。
publicvoidloadUrl(Stringurl,Map<String,String>additionalHttpHeaders) AddedinAPIlevel8 LoadsthegivenURLwiththespecifiedadditionalHTTPheaders. Parameters urltheURLoftheresourcetoload additionalHttpHeaderstheadditionalheaderstobeusedintheHTTPrequestforthisURL,specifiedasamapfromnametovalue.NotethatifthismapcontainsanyoftheheadersthataresetbydefaultbythisWebView,suchasthosecontrollingcaching,accepttypesortheUser-Agent,theirvaluesmaybeoverridenbythisWebView'sdefaults.
以下是一个简单的demo,来展示以下如何使用。
publicvoidtestLoadURLWithHTTPHeaders(){ finalStringurl="http://jb51.net"; WebViewwebView=newWebView(getActivity()); Map<String,String>extraHeaders=newHashMap<String,String>(); extraHeaders.put("Referer","http://www.google.com"); webView.loadUrl(url,extraHeaders); }
同样上面也可以应用到UserAgent等其他HTTP头信息。