0

HttpClient を使用してログイン ページを 1 回読み込み、リロードせずに src リンクからではなくキャッシュから img 要素の画像ファイルを取得することは可能ですか? ロードしたばかりのページのキャプチャを保存する必要があるため、重要です。src リンクからロードしようとすると、別のキャプチャになります。私は試した:

    DefaultHttpClient httpclient = new DefaultHttpClient();

    HttpGet httpget = new HttpGet("http://www.mysite/login.jsp");

    HttpResponse response = httpclient.execute(httpget);
    HttpEntity entity = response.getEntity();

    InputStream instream = entity.getContent();
    OutputStream outstream = new FileOutputStream("d://file.html");
    org.apache.commons.io.IOUtils.copy(instream, outstream);
    outstream.close();
    instream.close();

しかし、画像はありません。セレンライブラリからも試しHtmlUnitDriverましたが、画像もありません。多分私は何か他のことを試さなければなりませんか?手伝ってもらえますか?

私の英語に感謝し、申し訳ありません。

4

1 に答える 1

0

ここで述べたように: HttpClient Get images from responseDefaultHttpClient / getのHttpClientコンテンツは 1 つだけです。この場合、これは HTML ページです ( http://www.mysite/login.jspから提供されます)。その HTML ページを解析し、その src で指定された img タグを取得する必要があるよりも、それをダウンロードするだけで済みます (それだけで、login.jsp 要求を再送信する必要はありません!)。キャプチャ イメージをダウンロードする場合は、そのイメージをできるだけ早く取得する必要があります。そうしないと、ログインしようとする別のユーザーによって上書きされる可能性があります。

ブラウザと同じように、必要に応じてすべての src/link/ect を要求するよりも、HTML をダウンロードして解析する必要があります。

DefaultHttpClientデフォルトではキャッシュしません。

CachingHttpClientキャッシュはデフォルトで有効になっています。この場合、リモート サーバーへのリクエストが実行されるかどうか、またはその結果がキャッシュから返されるかどうかを判断するために、If-Modified-Since および If-None-Match ヘッダーを分析する必要があります。サーバーに変更がない場合、以前にキャッシュした場合は、キャッシュされたデータが取得されます。

于 2016-01-11T21:36:15.013 に答える