Android 4.0保存asp页面内容供离线查看

标签 android ssl sharepoint-2010

我是一名初级开发人员,一直致力于 RSS 阅读器。

我正在尝试从我的应用程序下载网页以供离线查看,但我遇到了一些问题。 当我尝试下载一个 asp 页面时,我似乎没有获得正确的内容,而是一个带有 asp 表单小部件的 html 页面。

任何人都可以帮助我了解正在发生的事情以及我如何才能下载该页面的内容吗?

我还应该提到该网页是一个使用 https ssl 身份验证的共享点网页,使用 httpclient 作为我连接和下载网页的方式。

最佳答案

要与 ASP 通信,您通常需要在 HttpPost 和其他请求中发送 __VIEWSTATE 和 _EVENTVALIDATION token 。您可以通过在基本页面上调用 HttpGet 并将 Patten 与正则表达式或简单的 str.contains("_VIEWSTATE") 结合使用并将其从 HTML 中剥离并随每个请求一起发送来获取一次。

如果您没有执行任何 POST,只是基本的 GET,那么请确保正确设置 header ,如下所示:

HttpGet req = new HttpGet("YOUR SITE'S URL");         
req.setHeader("Content-Type", "application/x-www-form-urlencoded");
req.setHeader("Host", "YOUR SITE'S ROOT PAGE");
req.setHeader("User-Agent", "Mozilla/5.0 ...");
req.setHeader("Accept-Encoding", "gzip,deflate,sdch");
req.setHeader("Accept", "text/html,application/xhtml+xml,application/xml");
req.setHeader("Accept-Language", "en-us,en");
req.setHeader("Accept-Charset", "ISO-8859-1,utf-8");
HttpResponse resp = client.execute(req, localContext);

不要忘记您可以存储在 httpcontext 中并在每次执行时传递的可能 session cookie,如上所示:

CookieStore cookieStore = new BasicCookieStore();
HttpContext localContext = new BasicHttpContext();
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);

从理论上讲,最好的解决方法是下载 Fiddler,在 Chrome 中运行网站,查看发生了什么,并在您的应用中模拟实际的浏览器请求:http://www.fiddler2.com/fiddler2/

关于Android 4.0保存asp页面内容供离线查看,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12319583/

相关文章:

android - 从数据库中获取值以设置复选框

php smtp ssl html 邮件不工作

sharepoint - 自定义选项卡上的自定义按钮始终处于禁用状态(功能区栏)

sharepoint - 如何以编程方式从 InfoPath XSN 模板创建 InfoPath 表单

sharepoint-2010 - 更新约会时时区更改为 UTC

java - 如何在 Java 中的 JSONobject 迭代工作中进行迭代

android - 想要播放YouTube视频,并将代码嵌入到webview中,并且在同一webview中显示html内容

java - handshake_failure 找不到合适的证书

php openssl - RSA_padding_check_PKCS1_type_2 和 RSA_EAY_PRIVATE_DECRYPT :padding check failed:rsa_eay. c:602:

java - 从 ArrayList 生成定义的集合