亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

初始化線程里 length=conn.getContentLength();返回值一直是-1

?class InitThread extends Thread {

private FileInfo mFileInfo = null;


public InitThread(FileInfo mFileInfo) {

this.mFileInfo = mFileInfo;

}

public void run() {

HttpURLConnection conn = null;

RandomAccessFile raf = null;

try {

URL url = new URL(mFileInfo.getUrl());

conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod("GET");

conn.setConnectTimeout(3000);

int length = -1;

if(conn.getResponseCode() == HttpStatus.SC_OK)

{

length = conn.getContentLength(); ? ? ? ? ? ? ? ? //獲得的值一直是-1,無法下載

}

if(length <=0)

{

return;

}

File dir = new File(DOWNLOAD_PATH);

if(!dir.exists())

{

dir.mkdir();

}

File file = new File(dir,mFileInfo.getFileName());

raf = new RandomAccessFile(file, "rwd");

raf.setLength(length);

mFileInfo.setLength(length);

mHandler.obtainMessage(MSG_INIT,mFileInfo).sendToTarget();

}catch(Exception e)

{

e.printStackTrace();

}finally

{

try {

raf.close();

conn.disconnect();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}


正在回答

2 回答

如果網絡連接失敗會導致這個問題,你先試試在瀏覽器里能不能打開文件的URL,如果打不開就是網絡地址的問題,換個文件下載地址試下

0 回復 有任何疑惑可以回復我~

getContentLength()方法是是從請求體中獲取數據,而GET是URL明文,API是這樣說的:Returns the length, in bytes, of the request body and made available by the input stream, or -1 if the length is not known ir is greater than Integer.所有會一直放回-1

conn.setRequestMethod("POST");
//把提交從GET改為POST


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Android-Service系列之斷點續傳下載
  • 參與學習       20431    人
  • 解答問題       103    個

想升職加薪么?本章課程你值得擁有,滿滿的干貨,學起來吧

進入課程

初始化線程里 length=conn.getContentLength();返回值一直是-1

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號