I need to display a web page in my Android app which is looking for a referer to bypass the security. I’m new to Android so I know how to display the web page in a web view but not how to send the ‘referer’ along with the url request. I’m sure it will need to update the HTTPHeaderField but I cannot find any reference for it in Android. The code below is what I’m using to bring up the web page but without the ‘referer’ it says ‘Access Denied’
WebView webview = new WebView(this); setContentView(webview); webview.loadUrl("http://www.mywebsite.com");
I think the answer may lie in the WebView.LoadURL method which adds extra headers but I can’t find any examples of it.
For which API-level do you need that function?
Since API Level 8 there is a second
public void loadUrl (String url, Map<String, String> extraHeaders)
extraHeaders you should be able to send a referrer.
Here is a complete working example:
String url = "http://www.targetserver.tld/"; Map<String, String> extraHeaders = new HashMap<String, String>(); extraHeaders.put("Referer", "http://www.referer.tld/login.html"); WebView wv; wv = (WebView) findViewById(R.id.webview); wv.loadUrl(url, extraHeaders);
You will need to use Intent Filters to capture and modify WebView requests.
Assuming that you need to specify doamin.com/page.html as referrer
- Setup intent filters to capture all http requests in WebView
- If request is for “doamin.com/page.html”, return pre-defined page that has a refresh tag to send user to “http://www.mywebsite.com”
- domain.com/page.html would be sent as a referrer to mywebsite.com
In newer APIs you can specify headers in loadUrl itself.