WebView中的Http Referer - Android

时间:2011-05-17 18:03:17

标签: android webview

在开发我在WebView中显示图像的简单应用程序时,我遇到了一些问题。

由于将我重定向到另一个页面,因此无法加载图像。我发现了问题,这对我来说只有一半。解决方案是

例如:

WebView ww = new WebView(this);

我尝试加载这样的图像:

ww.loadUrl("http://i1.kwejk.pl/site_media/obrazki/92825-ism.jpg");

由于重定向,无法加载

和图像。

但是当我加载这样的图像时:

Map extraHeaders = new HashMap(); extraHeaders.put("Referer", "2"); ww.loadUrl("http://i1.kwejk.pl/site_media/obrazki/92825-ism.jpg", extraHeaders);

工作正常。

最大的问题是我在WebView中加载了大约10个图像:

String data="<html><body><img src="link1" /><img src="link2" /><img src="link3" /></body></html>";

ww.loadData(data);

问题是:当我尝试loadData而不是loadUrl时,是否有可能设置referer?

2 个答案:

答案 0 :(得分:1)

我找到了解决问题的方法。

如果有人有这个,这里也是解决方案:

首先,您需要下载图片:

Bitmap image;
URL myFileUrl = new URL(urlToImage); 
HttpURLConnection conn= (HttpURLConnection)myFileUrl.openConnection();
conn.setDoInput(true);
conn.addRequestProperty("Referer", "httpReferer");
conn.connect();
InputStream is = conn.getInputStream();
image = BitmapFactory.decodeStream(is);   

然后你需要将图像Bitmap转换为String:

ByteArrayOutputStream bos = new ByteArrayOutputStream();
image.compress(CompressFormat.JPEG, 40, bos);
byte[] bitmapdata = bos.toByteArray();
String imgToString = Base64.encodeBytes(bitmapdata);

现在,很容易在WebView中显示String,如下所示:

String src = "<html><body><img src='data:image/png;base64," + imgToString + "'/></body></html>"

希望它有所帮助。

答案 1 :(得分:1)

这是我非常简单的解决方案,只需loaddatawithbaseurl

http://androidyou.blogspot.com/2011/06/how-to-set-android-webview-referrer.html