1

私は、RSS リーダーに取り組んできたジュニア開発者です。

アプリから Web ページをダウンロードしてオフラインで表示しようとしていますが、いくつか問題があります。asp ページをダウンロードしようとすると、適切なコンテンツが表示されず、代わりに asp フォーム ウィジェットを含む html ページが表示されます。

何が起こっているのか、ページのコンテンツをダウンロードする方法を理解するのを手伝ってくれる人はいますか?

また、Web ページは、https ssl 認証を使用する共有ポイント Web ページであり、Web ページに接続してダウンロードする手段として httpclient を使用することにも言及する必要があります。

4

1 に答える 1

0

ASP と通信するには、通常、HttpPost およびその他の要求で __VIEWSTATE および _EVENTVALIDATION トークンを送信する必要があります。基本ページで HttpGet を呼び出し、正規表現または単純な str.contains(" _VIEWSTATE") で Patten を使用し、HTML からそれを取り除き、すべての要求で送信することで、それらを一度取得できます。

POST を実行せず、基本的な 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 に保存し、すべての実行で渡すことができる可能性のあるセッション Cookie を忘れないでください。

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

理論的には、Fiddler をダウンロードし、Chrome でサイトを実行し、何が起こっているかを確認し、アプリで実際のブラウザー リクエストをエミュレートすることです: http://www.fiddler2.com/fiddler2/

于 2012-09-08T00:14:15.903 に答える