2011-09-09 14 views
9

क्या किसी को भी HTTP अनुरोध के साथ बाइट श्रेणियों का अनुरोध करने का तरीका पता है? मैं अपने आवेदन में डाउनलोड को फिर से शुरू करने की सुविधा प्रदान कर रहा हूं, जहां डाउनलोड बाएं रेंज का अनुरोध करके और getContent() से अपने इनपुट स्ट्रीम को पढ़ना है।अपाचे एचटीपी क्लाइंट एक बाइट रेंज हेडर जोड़ता है?

मैंने हेडर पर फिर से प्रयास करने की कोशिश की लेकिन वे शून्य हैं। स्रोत नीचे है।

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(); 
} 

}

केविन

उत्तर

12

मैं निम्न पंक्ति जोड़कर इस काम कर प्राप्त करने में सक्षम था:

httpGet.addHeader("Range", "bytes=0-0"); 
संबंधित मुद्दे