0

Android の URL からファイル ストリームを取得するために Apache HTTP クライアントを使用しています。ネットワーク リソースの無意味なコストを回避するために、ストリームのヘッダーをチェックして、ファイル全体をロードする必要があるかどうかを判断したいと考えています。
今のところ、次のコードを使用して inStream を取得し、そこから最初の数バイトを読み取るだけです。

response = mClient.execute(method, localcontext);
final HttpEntity entity = response.getEntity();
if (entity != null) {
    InputStream instream = entity.getContent();
    byte[] ints = new byte[2];
    instream.read(ints);
}

上記の手順でファイル全体が読み込まれるかどうか疑問に思っています。ストリームを明示的に閉じる必要があります。どのように?
ありがとう〜

4

1 に答える 1

0

より良い方法は、HEAD メソッドを使用することです。http ヘッダーを返すだけで、実際のコンテンツや本文は返しません。

例(公式サイトより

 HeadMethod head = new HeadMethod("http://jakarta.apache.org");
        // execute the method and handle any error responses.
        ...
        // Retrieve all the headers.
        Header[] headers = head.getResponseHeaders();

ヘッダーを取得したら、それらを確認してから、それに応じて別の GET/POST 呼び出しを行い、実際にコンテンツをダウンロードできます。

于 2013-05-16T07:09:03.103 に答える