2012-09-07 32 views
1

我是一名开发人员,一直致力于RSS阅读器。Android 4.0保存asp页面的内容供脱机查看

我试图从我的应用程序下载网页进行脱机查看,但我遇到了一些问题。 当我尝试下载一个asp页面时,我似乎没有得到正确的内容,而是一个带有asp窗体小部件的html页面。

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

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

+0

这听起来更像是一个服务器端问题(服务器提供错误的内容),而不是客户端问题 –

+0

您对asp窗体小部件有什么意思。在SharePoint页面上,几乎整个内容都是表单的一部分。所以页面上会有一个HTML表单元素。当您使用普通浏览器访问内容时,是否将您下载的内容与网页内容进行了比较?另一个问题可能是您必须先进行身份验证才能访问您请求的实际页面。也许你可以发布你收到的内容。 – Flo

回答

0

要与ASP通信,您通常需要在您的HttpPost和其他请求中发送__VIEWSTATE和_ EVENTVALIDATION标记。您可以通过在基本页面上调用HttpGet并使用正则表达式或简单的str.contains(“ _VIEWSTATE”)来使用Patten,并将其从HTML中剥离出来并随每个请求发送。

如果你没有做任何职位,只是基本的GET,然后确保你正确设置标头,像这样:

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); 

不要忘了,你可以存储可能的会话cookie在HttpContext的,也有通过在每一个执行上述所见:

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

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