【发布时间】:2013-11-21 15:02:45
【问题描述】:
我在我的电脑上运行了 c# 程序来监听 http 请求,我尝试制作一个应用程序,它通过 HttpGet 从我的电脑获取文件。
new HttpGet(url + 文件路径);
文件在同一目录下,路径为C://Users/abc/def/test.txt
但如果我将它写入文件路径,我将无法获取该文件。我应该写什么到文件路径?
提前致谢
【问题讨论】:
我在我的电脑上运行了 c# 程序来监听 http 请求,我尝试制作一个应用程序,它通过 HttpGet 从我的电脑获取文件。
new HttpGet(url + 文件路径);
文件在同一目录下,路径为C://Users/abc/def/test.txt
但如果我将它写入文件路径,我将无法获取该文件。我应该写什么到文件路径?
提前致谢
【问题讨论】:
您需要创建一个 AsyncTask 来执行您的请求,因为从 Android Honeycomb 开始,您无法在主线程上添加网络请求。
这是一个例子:
private class HttpGetter extends AsyncTask<URL, Void, Void> {
@Override
protected Void doInBackground(URL... urls) {
// TODO Auto-generated method stub
StringBuilder builder = new StringBuilder();
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(urls[0]);
try {
HttpResponse response = client.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
Log.v("Getter", "Your data: " + builder.toString()); //response data
} else {
Log.e("Getter", "Failed to download file");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
HttpGetter get = new HttpGetter();
get.execute("http://192.168.1.2/song.mp3");
【讨论】:
File并将其存储在getExternalStorage()/folder中