我试图在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