java - Apache HttpClient 获取添加字节范围 header ?

标签 java android apache

有谁知道如何在 HTTP 请求中请求字节范围?我希望通过请求下载停止位置的字节范围并从 getContent() 读取其 InputStream 来促进在我们的应用程序中恢复下载。

我尝试遍历标题,但它们为空。来源如下。

import java.io.IOException;
import java.io.InputStream;

import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.util.Log;

/**
 * @author Kevin Kowalewski
 *
 */
public class DownloadClient {
DefaultHttpClient httpClient;
HttpGet httpGet;
HttpResponse httpResponse;
HttpEntity httpEntity;
InputStream httpInputStream;

private static String LOG_TAG = DownloadClient.class.getName();

public DownloadClient(){
    httpClient = new DefaultHttpClient();
    httpGet = new HttpGet("http://cachefly.cachefly.net/100mb.test");
    for (Header header : httpGet.getAllHeaders()){
        Log.d(LOG_TAG, "--> Header: " + header);
    }

    Log.d(LOG_TAG, "--> Header size is: " + httpGet.getAllHeaders().length);
    try {
        httpResponse = httpClient.execute(httpGet);
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    httpEntity = httpResponse.getEntity();
    try {
        httpInputStream = httpEntity.getContent();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    Log.d(LOG_TAG, "--> StatusLine: " + httpResponse.getStatusLine());
}

public void read(){
    byte[] readBuffer = new byte[32];
    try {
        while (httpInputStream.read(readBuffer) != -1){
            try{Thread.sleep(100);}catch(Exception e){}
            //Log.d(LOG_TAG,"--> Read Bytes: " + new String(readBuffer));
        };
    } catch (IOException e) {
        e.printStackTrace();
    }

}

public void shutdown(){
    httpGet.abort();
    httpClient.getConnectionManager().shutdown();
}

}

凯文

最佳答案

我可以通过添加以下行来完成这项工作:

httpGet.addHeader("Range", "bytes=0-0");

关于java - Apache HttpClient 获取添加字节范围 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7362719/

相关文章:

java - 如何检查字符串列表是否包含特定值?

java - JMX与Apache CXF的集成

android - 设置背景Drawable时填充在哪里?

android - 将自签名证书加载到 HttpsUrlConnection 会破坏默认 CA 证书验证

java - 关于如何将这些数据库表实现为 Java 的任何想法?

java - 在链接列表中查找数字的中位数

PHP加载错误: %1 is not a valid Win32 application.

apache - 来自浏览器的过时加密警告

java - 如何减少appium中元素搜索的默认时间

java - 基于表单的身份验证在 tomcat 6.0 中不起作用