2016-07-26 14 views
5

Aşağıdaki dosya indirme için android kodumu sever.HttpURLConnection istek dosyası indirmek için sunucuya iki kez vuruluyor

private String executeMultipart_download(String uri, String filepath) 
      throws SocketTimeoutException, IOException { 
     int count; 
     System.setProperty("http.keepAlive", "false"); 
     // uri="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTzoeDGx78aM1InBnPLNb1209jyc2Ck0cRG9x113SalI9FsPiMXyrts4fdU"; 
     URL url = new URL(uri); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.connect(); 
     int lenghtOfFile = connection.getContentLength(); 
     Log.d("File Download", "Lenght of file: " + lenghtOfFile); 

     InputStream input = new BufferedInputStream(url.openStream()); 
     OutputStream output = new FileOutputStream(filepath); 
     byte data[] = new byte[1024]; 
     long total = 0; 

     while ((count = input.read(data)) != -1) { 
      total += count; 
      publishProgress("" + (int) ((total * 100)/lenghtOfFile)); 
      output.write(data, 0, count); 
     } 
     output.flush(); 
     output.close(); 
     input.close(); 
     httpStatus = connection.getResponseCode(); 
     String statusMessage = connection.getResponseMessage(); 
     connection.disconnect(); 
     return statusMessage; 
    } 

Bu kodu hata ayıkladım. Bu işlev, sunucuya iki kez vursa bile yalnızca bir kez çağrılır. Bu koddaki herhangi bir hata var mı?

Teşekkür

Sizin hata bu satırda yatıyor
+0

deneyin:

çözüm olarak size Böylece sizin snipped irade benziyor connection.getInputStream()

ile url.openStream() değiştirmeniz gerekiyor. Bir dosyanın dosya indirme isteğinden şüpheleniyorum, diğeri '' favicon'' veya diğer bazı ilgili olmayan şeyler isteyebilir. – f1sh

+0

Her iki istek de aynı. –

+0

@RahulGiradkar Cevap ekledim, lütfen kontrol edin, –

cevap

5

:

public final InputStream openStream() throws java.io.IOException { 
    return openConnection().getInputStream(); 
} 

Ama zaten açılmış:

url.openStream() 

bu fonksiyonun kaynaklarına grepcode giderseniz

, o zaman göreceğiz Bağlantı, böylece bağlantıyı iki kez açarsınız. sunucuya istek olarak gelen olduğunu öğrenmek için

HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
    connection.connect(); 
    int lenghtOfFile = connection.getContentLength(); 
    Log.d("File Download", "Lenght of file: " + lenghtOfFile); 

    InputStream input = new BufferedInputStream(connection.getInputStream()); 
+0

Öneriniz için teşekkür ederiz. Şimdi iyi çalışıyor –