0

部分的な GET リクエストを作成しようとしていて、206 の応答を期待していますが、まだ 200 OK を取得しています。206で応答させるにはどうすればよいですか?

ここに私が書いたコードがあります:

HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();

int start = Integer.parseInt(args[1]);
int end = Integer.parseInt(args[2]);

urlConn.setRequestMethod("GET");
urlConn.setRequestProperty("Range", "bytes=" + start + "-" + end);

if (urlConn.getResponseCode() != HttpURLConnection.HTTP_PARTIAL)
    System.out.println ("File cannot be downloaded.");          
else    
{                                   
    String filepath = url.getPath();
    String filename = filepath.substring (filepath.lastIndexOf('/') + 1);

    BufferedInputStream in = new BufferedInputStream (urlConn.getInputStream());
    BufferedOutputStream out = new BufferedOutputStream (new FileOutputStream (filename));

    int temp;    
    while ((temp = in.read()) != -1)
    {
        out.write ((char)temp);
    }

    out.flush();
    out.close();

    System.out.println ("File downloaded successfully.");
}
4

1 に答える 1

1

206で応答させるにはどうすればよいですか?

Rangeサーバーにヘッダーを尊重させることはできません。HTTP 1.1仕様には次のように書かれています:

サーバーは、Range ヘッダーを無視することができます。


あなたのコメント:

サーバーがそれを無視しないことはわかっています。少なくともすべきではない

どうやら、サーバーは >>IS<< ヘッダーを無視しています。または、要求している範囲にドキュメント全体が含まれます。

于 2013-03-17T13:39:06.777 に答える