HTTP中的“部分”获取请求消息

时间:2013-03-09 13:26:27

标签: java url bytearray httpurlconnection urlconnection

我需要在Java中使用HTTP“部分获取请求”消息,但我在互联网上找不到任何答案。

实际上,我知道如何发送“获取”消息,但我不知道如何发送“部分获取”消息。

以下代码显示了一些信息:

      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]
                //
                ////////////////////////////////////////////////////
                ////////////////////////////////////////////////////

                }
            }
        }

1 个答案:

答案 0 :(得分:1)

您的代码遍布各处,因此很难弄清楚您在自己的个人研究中的位置。但是假设您已经知道服务器端资源支持范围请求 - 要发送部分GET,您只需要做两件事:

  1. 在您正在寻找的范围的开头和结尾添加Range:标题
  2. 处理回复,指出服务器 应该 返回状态代码“206 - Partial Content”
  3. 一些伪代码:

    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
    }