編輯:關於Android編程
同樣在上一篇服務器的基礎上,本文客戶端也在登錄界面 Andriod簡單http get請求基礎上,用戶注冊後跳轉到下載界面,本文下載界面只有兩個View,一個是textView顯示注冊後用戶名(本文未做登錄界面,方法與注冊類似,只是在服務器端查詢數據庫中用戶名,密碼是否正確)。另一個為下載按鈕,點擊後下載到sd卡中。
下面先將工具包,該類封裝了Http請求,本文使用get方法,使用HttpURLConnection類來負責具體請求。
httpUtils類中添加sendDownloadPost方法
具體代碼如下:
public static void sendDownloadPost(URL urls)
{
InputStream inputStream=null;
//String path="http://192.168.0.179:8080/Myweb/download.do";
OutputStream outputStream=null;
try {
//url = new URL(urls);
//本文采用HttpURLConnection,HttpClient一樣可以
HttpURLConnection connection=(HttpURLConnection) urls.openConnection();
connection.setRequestMethod("GET");
//超時請求設置為3s
connection.setConnectTimeout(3000);
//設置響應時間10s
connection.setReadTimeout(10000);
connection.setDoInput(true);
connection.setDoOutput(true);
//獲取返回碼
int responseCode=connection.getResponseCode();
//請求正確
if(responseCode==200)
{
Log.d(TAG, "返回正確!!");
inputStream=new BufferedInputStream(connection.getInputStream());
//生成sd卡文件路徑
File file=new File(Environment.getExternalStorageDirectory()+File.separator +"A.pdf");
outputStream=new BufferedOutputStream(new FileOutputStream(file));
byte[] str=new byte[2048];
int len=-1;
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))
{
Log.d(TAG, "有權限");
//將inpustream寫入到sd卡
while((len=inputStream.read(str))!=-1)
{
outputStream.write(str, 0, len);
}
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(inputStream!=null)
{
try {
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(outputStream!=null)
{
try {
outputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return;
}
具體在manifest.xml
添加如下:
ps:若想下載文件名與服務器上文件名相同,可在文件名之前,中間處理了中文亂碼問題
String filename = connection.getHeaderField("Content-Disposition");
filename=new String(filename.getBytes("iso8859-1"), "gbk");
filename=filename.split("filename=")[1];
添加到
File file=new File(Environment.getExternalStorageDirectory()+File.separator +"A.pdf");A.pdf改為filename即可
Android新浪微博客戶端(七)——ListView中的圖片異步加載、緩存
我們都知道對每一個Weibo Item都有用戶頭像,而且每一條微博還可能帶有圖片。如果在加載列表的同時加載圖片,這樣有幾個缺點,第一很費事,界面卡住,用戶體
安卓(Android)手機ROM和RAM的區別
我們在選購安卓手機的時候,參數中最容易犯暈的就是ROM和RAM了,許多朋友都不了解是什麼意思,廠家也借助這一點來大做文章,下面我就給大家來簡單的介紹一下其中
【Android】由淺到深理解AIDL
一、 Binder概述1.1 為什麼要用binder出於安全性、穩定性和內存管理的考慮,Android的應用和系統服務運行在分離的進程中,但是它們之間需要通信和共享數據避
搭建android應用開發環境
首先你需要以下四個工具: 1.JDK (Java Development kit) 2.Eclipse 3.Android SDK(Software Developme