2

Java で HTTP "Partial Get Request メッセージを使用する必要がありますが、インターネット上で回答が見つかりませんでした。

実際、「取得」メッセージの送信方法は知っていますが、「部分取得」メッセージの送信方法はわかりません。

以下のコードは、いくつかの情報を示しています。

      else if(args.length == 0){ // 5 OLACAK
            con.setRequestMethod("HEAD");

            fromURL = new BufferedInputStream(con.getInputStream(), bufSize);
            toFile = new BufferedOutputStream(new FileOutputStream(outputFile), bufSize);

            if(con.getResponseCode() == HttpURLConnection.HTTP_OK){

                byte startRange =  0; //Byte.parseByte(args[3]);
                byte finishRange =  25;//Byte.parseByte(args[4]);

                if(startRange < 0 || finishRange > ((byte)con.getContentLength())
                        || startRange > finishRange){
                    System.out.println("Range is not OK.");
                }else{                     

                ////////////////////////////////////////////////////
                ////////////////////////////////////////////////////
                //
                // I need to send a partial get message here 
                // Range should in between [startRange, finishRange]
                //
                ////////////////////////////////////////////////////
                ////////////////////////////////////////////////////

                }
            }
        }
4

1 に答える 1

1

あなたのコードはいたるところにあるので、あなたがあなた自身の個人的な研究のどこにいるかを理解するのは難しいです。ただし、サーバー側のリソースが範囲リクエストをサポートしていることをすでに知っていると仮定しましょう。部分的なGETを送信するには、次の2つのことを行う必要があります。

  1. Range:探している範囲の開始と終了を含むヘッダーを含めます
  2. サーバーが「206-部分コンテンツ」のステータスコードを返す必要があることに注意して、応答を処理します

いくつかの擬似コード:

conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.setDoOutput(true);
conn.addRequestProperty("Range", "bytes=0-25");
BufferedReader reader = new BufferedReader(new InputStreamReader(
        conn.getOutputStream()));
if(conn.getResponseCode() == 206) {
    // process stream here
}
于 2013-03-09T14:18:18.693 に答える