我試圖在Android中使用HttpURLConnection
從URL下載文件。如何在Android中使用http從服務器下載文件
首先,我以編程方式添加textviews,併爲每個textviews設置一個偵聽器以下載文件。 以下是該代碼。
for(Element ele: elements){
final TextView attachItem = new TextView(this);
attachItem.setText("myStr");
attachItem.setTag("myStr2");
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
attachItem.setLayoutParams(llp);
ll.addView(attachItem, i++);
// set a listener to textview
attachItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// when clicked, execute class that extends `AsyncTask`
new downloadAttach().
execute(attachItem.getTag().toString(), attachItem.getText().toString());
}
});
}
和downloadAttach()
使用http協議從服務器下載文件。以下是代碼。
HttpURLConnection con = (HttpURLConnection)(new URL("MyUrl")).openConnection();
con.setRequestMethod("POST");
...
...
...
con.setRequestProperty("Cookie", "myCookie");
con.setDoInput(true);
con.setDoOutput(true);
DataOutputStream output = new DataOutputStream(con.getOutputStream());
output.writeBytes("myQuery");
output.close();
InputStream is = con.getInputStream();
FileOutputStream fos = new FileOutputStream(new File(Environment.getDataDirectory(), "fileName"));
// In my case, getDataDirectory() returns "/data"
byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
is.close();
fos.close();
但是,當我點擊一個textview,沒有任何改變。我手機中的/data
目錄中沒有文件。
有什麼問題?有人請幫忙。
下載路徑並不重要。我只是想下載... – soonoo 2015-02-10 05:21:18
我認爲你應該先添加日誌來檢查參數是否傳輸到downloadTask是否正確,然後如果下載正常發生。 – 2015-02-10 05:42:19
@ChineGary我認爲參數傳輸正確。我如何檢查下載是否正常?沒有任何例外... – soonoo 2015-02-10 05:56:38