我尝试使用Android中的HttpURLConnection
从网址下载文件。
首先,我以编程方式添加了textview,并为每个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();
但是当我点击文本视图时,没有任何变化。我手机中的/data
目录中没有文件。
问题是什么?有人请帮忙。
答案 0 :(得分:0)
您想在SD卡中下载文件吗?如果是,请尝试将路径更改为
Environment.getExternalStorageDirectory() + filename
或
在您的应用包目录中使用"/data/packagename/" + filename
。
答案 1 :(得分:0)
您需要致电#connect
,否则请求永远不会发出。
con.setDoInput(true);
con.setDoOutput(true);
con.connect();
DataOutputStream output = new DataOutputStream(con.getOutputStream());