首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

andorid使用异步http框架跟第三方HttpClinet上传文件

2013-10-22 
andorid使用异步http框架和第三方HttpClinet上传文件android使用异步http框架和第三方HttpClinet上传文件

andorid使用异步http框架和第三方HttpClinet上传文件

android使用异步http框架和第三方HttpClinet上传文件完整源码

首先我们先来看一下使用第三方HttpClinet的实现方式

这种实现方式需要用到一下3个jar包

commons-fileupload-1.2.1.jar  、  commons-io-1.4.jar  、  commons-httpclient-3.0.1.jar 。

这些jar已经包含在源码工程里边了

关于使用步骤我不多说,代码里边的注释已经写明

public void uploadByAsyncHttpClient(View view) {String path = this.et_path.getText().toString().trim();final String url = "http://110.65.99.66:8080/uploadfileServer/UploadFileServlet";final File file = new File(path);// 先判断文件是否存在if (file.exists() && file.length() > 0) {// 1. 创建AsyncHttpClient对象AsyncHttpClient client = new AsyncHttpClient();// 2.设置参数体RequestParams params = new RequestParams();try {// 其实这里的异常不可能出现,因为上边已经做了判断params.put("profile_picture", file);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 3.上传文件client.post(url, params, new AsyncHttpResponseHandler() {// 上传成功时回调的方法@Overridepublic void onSuccess(int statusCode, Header[] headers,byte[] responseBody) {Toast.makeText(MainActivity.this, "上传成功!", 0).show();}// 上传失败时回调的方法@Overridepublic void onFailure(int statusCode, Header[] headers,byte[] responseBody, Throwable error) {Toast.makeText(MainActivity.this, "上传失败!错误码:" + statusCode,0).show();}});} else {Toast.makeText(this, "文件不存在!", 0).show();}}



我们来对比一下上边两种实现方式

1.从实现步骤来看,第一种用了7步,第二种只用了3步,操作步骤大大简化

2.第一种方式需要将网络访问的代码放到子线程中去,否则在4.0以上的系统上运行会抛出android.os.NetworkOnMainThreadException,而第二种不用去考虑这个异常

3.因为将网络访问的代码放到了子线程中去,所以子线程中如果有UI的更新,需要去调用Activity的runOnUiThread()方法

经过对比,第二种方式的优越性就凸显出来了。所以安卓的文件上传建议使用异步http框架来实现。


热点排行