2012-09-07 3 views
1

저는 RSS 리더로 작업 한 중학교 개발자입니다.안드로이드 4.0 asp 페이지의 콘텐츠를 오프라인보기로 저장

오프라인보기를 위해 내 앱에서 웹 페이지를 다운로드하려고하는데 몇 가지 문제가 있습니다. ASP 페이지를 다운로드하려고 할 때 올바른 컨텐츠를 얻지 못했지만 대신 ASP 폼 위젯을 사용하는 html 페이지가 있습니다.

어떤 일이 일어나고 있는지, 그리고 어떻게하면 페이지의 콘텐츠를 다운로드 할 수 있는지 이해하는 데 도움을 줄 수 있습니까?

웹 페이지를 연결하고 다운로드하는 수단으로 httpclient를 사용하는 https ssl 인증을 사용하는 공유 웹 페이지도 언급해야합니다.

+0

이것은 클라이언트 문제보다 서버 측 문제 (잘못된 콘텐츠를 제공하는 서버)와 비슷하게 들린다 –

+0

ASP 형식 위젯은 무엇을 의미합니까? SharePoint 페이지에서 거의 모든 내용이 양식의 일부입니다. 따라서 페이지에는 HTML 양식 요소가 있습니다. 다운로드 한 컨텐츠를 일반 브라우저로 액세스 할 때 페이지의 컨텐츠와 비교 했습니까? 또 다른 문제점은 요청중인 실제 페이지에 액세스하기 전에 인증해야한다는 것입니다. 아마도 귀하가받는 콘텐츠를 게시 할 수 있습니다. – Flo

답변

0

ASP와 통신하려면 일반적으로 HttpPost 및 기타 요청에서 __VIEWSTATE 및 _ EVENTVALIDATION 토큰을 보내야합니다. 기본 페이지에서 HttpGet을 호출하고 Regexes 또는 간단한 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); 

당신이 저장할 수있는 가능한 세션 쿠키에 대해 잊지 마세요 에서 HttpContext를도에 전달할 모든 실행 위에서 볼 :

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

이론에 대해 이동하는 가장 좋은 방법은, 피들러를 다운로드 크롬에서 사이트 운영, 무슨 일이 일어나고 있는지보고 실제 브라우저 요청을 모방하는 것입니다 앱 : http://www.fiddler2.com/fiddler2/

관련 문제