【问题标题】:how to use the HTTP range header in J2ME?如何在 J2ME 中使用 HTTP 范围标头?
【发布时间】:2011-07-17 10:37:10
【问题描述】:
  1. 是否可以在 HTTP GET 请求中使用范围标头?
  2. 如果是,比怎么做?

我只想从服务器下载指定字节的字节。 即如果我想下载从 0 到 255 的字节。

【问题讨论】:

    标签: java java-me httpconnection


    【解决方案1】:

    查看此示例代码,

          HttpConnection connection = null;
          InputStream inputstream = null;
          try
          {
            connection = (HttpConnection) Connector.open(url); // Enter your URL here.
            //HTTP Request
            connection.setRequestMethod(HttpConnection.GET);
            connection.setRequestProperty("Content-Type","//text plain");
            connection.setRequestProperty("Connection", "close");
            // HTTP Response
            System.out.println("Status Line Code: " + connection.getResponseCode());
            System.out.println("Status Line Message: " + connection.getResponseMessage());
            if (connection.getResponseCode() == HttpConnection.HTTP_OK)
            {
              System.out.println(
                connection.getHeaderField(0)+ " " + connection.getHeaderFieldKey(0));        
              System.out.println(
               "Header Field Date: " + connection.getHeaderField("date"));
              String str;
              inputstream = connection.openInputStream();
              int length = (int) connection.getLength();
              if (length != -1)
              {
                byte incomingData[] = new byte[length];
                inputstream.read(incomingData);
                str = new String(incomingData);
              }
              else  
              {
                ByteArrayOutputStream bytestream = 
                      new ByteArrayOutputStream();
                int ch;
                while ((ch = inputstream.read()) != -1)
                {
                  bytestream.write(ch);
                }
                str = new String(bytestream.toByteArray());
                bytestream.close();
              }
              System.out.println(str);
            }
          }
          catch(IOException error)
          {
           System.out.println("Caught IOException: " + error.toString());
          }
          finally
          {
            if (inputstream!= null)
            {
              try 
              { 
                inputstream.close();
              }
              catch( Exception error)
              {
                 /*log error*/
              }
            }
            if (connection != null)
            {
              try
              {
                 connection.close();
              }
              catch( Exception error)
              {
                 /*log error*/
              }
    

    【讨论】:

      【解决方案2】:

      你可以试试这个:

      HttpConnection httpConnection = (HttpConnection) Connector.open("http://www.server.com/file");
      httpConnection.setRequestMethod(HttpConnection.GET);
      httpConnection.setRequestProperty("Range","0-255");
      

      查看文档:HttpConnection

      【讨论】:

      • 嗨,我试过了,但所有字节都下载了 httpConnection.setRequestProperty("Range","0-255");即我指定了 0-512 的字节,但所有字节都来了。跨度>
      • Web 服务器并不总是支持范围请求。
      猜你喜欢
      • 2011-03-19
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 1970-01-01
      相关资源
      最近更新 更多