感谢stackoverflow,我设法实现了一个webview,我可以通过长按上下文菜单/HitTestResult 保存图像。因此,当我获得图像的 URL 时,我会执行以下操作:
URL url = new URL(yourImageUrl);
InputStream is = (InputStream) url.getContent();
byte[] buffer = new byte[8192];
int bytesRead;
ByteArrayOutputStream output = new ByteArrayOutputStream();
while ((bytesRead = is.read(buffer)) != -1) {
output.write(buffer, 0, bytesRead);
}
then put the output.toByteArray() into a FileOutputStream;
对于“普通”站点,这可以正常工作,图像存储在 sdcard 上。
但我仍然不知道(我对此进行了广泛的搜索:-( 如何下载需要某种身份验证的站点图像。例如,我进入站点并将用户名/密码输入表单(一些服务器端语言(如 PHP),这给我带来了一些图片。webview 在登录和显示所有内容方面没有问题。但我无法保存图像,因为身份验证 - 存在于 webview 中 -不存在于我的图像保存机制。
使用上面的代码,我只是在 URL.getContent() 上获得了 FileNotFoundException。然后我尝试使用 HttpClient 和 HttpGet/HttpResponse,其中响应总是代码 403。
我的问题:如何访问/下载/验证以获取受保护区域的图像(可能是通过服务器端语言或基本验证)。
我的意思是......它都在那里,正确显示并在 WebView 中进行了身份验证:-( 但是 WebView 的内容和我的 URL/Http 请求下载工作之间没有联系。webview 可以以某种方式共享它的身份验证状态吗?
我什至考虑过从 WebView 缓存中获取图像,因为它就在那里。(但我也不知道如何做到这一点......)。是否没有机制可以以某种方式直接从 WebView 中获取图像?
我会感谢任何形式的帮助!