package com.andbase.demo.activity; import java.io.File; import android.app.DialogFragment; import android.graphics.Bitmap; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import com.ab.activity.AbActivity; import com.ab.fragment.AbAlertDialogFragment.AbDialogOnClickListener; import com.ab.http.AbBinaryHttpResponseListener; import com.ab.http.AbFileHttpResponseListener; import com.ab.http.AbHttpUtil; import com.ab.http.AbRequestParams; import com.ab.http.AbStringHttpResponseListener; import com.ab.util.AbDialogUtil; import com.ab.util.AbFileUtil; import com.ab.util.AbImageUtil; import com.ab.util.AbToastUtil; import com.ab.view.progress.AbHorizontalProgressBar; import com.ab.view.titlebar.AbTitleBar; import com.andbase.R; import com.andbase.global.MyApplication; /** * 名称:HttpActivity * 描述:Http框架 * @author 还如一梦中 * @date 2011-12-13 * @version */ public class HttpActivity extends AbActivity { /** The Constant TAG. */ private static final String TAG = "HttpActivity"; private MyApplication application; private AbHttpUtil mAbHttpUtil = null; // ProgressBar进度控制 private AbHorizontalProgressBar mAbProgressBar; // 最大100 private int max = 100; private int progress = 0; private TextView numberText, maxText; private DialogFragment mAlertDialog = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setAbContentView(R.layout.http_main); AbTitleBar mAbTitleBar = this.getTitleBar(); mAbTitleBar.setTitleText(R.string.http_name); mAbTitleBar.setLogo(R.drawable.button_selector_back); mAbTitleBar.setTitleBarBackground(R.drawable.top_bg); mAbTitleBar.setTitleTextMargin(10, 0, 0, 0); mAbTitleBar.setLogoLine(R.drawable.line); application = (MyApplication)abApplication; Button getBtn = (Button)this.findViewById(R.id.getBtn); Button getCacheBtn = (Button)this.findViewById(R.id.getCacheBtn); Button postBtn = (Button)this.findViewById(R.id.postBtn); Button byteBtn = (Button)this.findViewById(R.id.byteBtn); Button fileDownBtn = (Button)this.findViewById(R.id.fileBtn); Button fileUploadBtn = (Button)this.findViewById(R.id.fileUploadBtn); //获取Http工具类 mAbHttpUtil = AbHttpUtil.getInstance(this); mAbHttpUtil.setTimeout(10000); //get请求 getBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 一个url地址 String url = "http://www.baidu.com"; mAbHttpUtil.get(url, new AbStringHttpResponseListener() { //获取数据成功会调用这里 @Override public void onSuccess(int statusCode, String content) { Log.d(TAG, "onSuccess"); //不能写在完成中,因为完成在有重定向的情况会提前结束 AbDialogUtil.removeDialog(HttpActivity.this); AbDialogUtil.showAlertDialog(HttpActivity.this,"返回结果",content.trim(),new AbDialogOnClickListener(){ @Override public void onNegativeClick() { } @Override public void onPositiveClick() { } }); } // 失败,调用 @Override public void onFailure(int statusCode, String content, Throwable error) { Log.d(TAG, "onFailure"); AbDialogUtil.removeDialog(HttpActivity.this); AbToastUtil.showToast(HttpActivity.this,error.getMessage()); } // 开始执行前 @Override public void onStart() { Log.d(TAG, "onStart"); //显示进度框 AbDialogUtil.showProgressDialog(HttpActivity.this,0,"正在查询..."); } // 完成后调用,失败,成功 @Override public void onFinish() { Log.d(TAG, "onFinish"); }; }); } }); //带缓存的get请求 getCacheBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 一个url地址 String url = "http://www.baidu.com"; mAbHttpUtil.getWithCache(url, new AbStringHttpResponseListener() { //获取数据成功会调用这里 @Override public void onSuccess(int statusCode, String content) { Log.i(TAG, "onSuccess"); AbDialogUtil.removeDialog(HttpActivity.this); AbDialogUtil.showAlertDialog(HttpActivity.this,"返回结果",content.trim(),new AbDialogOnClickListener(){ @Override public void onNegativeClick() { } @Override public void onPositiveClick() { } }); } // 失败,调用 @Override public void onFailure(int statusCode, String content, Throwable error) { Log.d(TAG, "onFailure"); AbDialogUtil.removeDialog(HttpActivity.this); AbToastUtil.showToast(HttpActivity.this,error.getMessage()); } // 开始执行前 @Override public void onStart() { Log.d(TAG, "onStart"); //显示进度框 AbDialogUtil.showProgressDialog(HttpActivity.this,0,"正在查询..."); } // 完成后调用,失败,成功 @Override public void onFinish() { Log.d(TAG, "onFinish"); }; }); } }); //post请求 postBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String url = "http://www.baidu.com"; // 绑定参数 AbRequestParams params = new AbRequestParams(); params.put("phone", "15150509567"); params.put("param2", "2"); params.put("param3", "10"); mAbHttpUtil.post(url,params, new AbStringHttpResponseListener() { // 获取数据成功会调用这里 @Override public void onSuccess(int statusCode, String content) { Log.d(TAG, "onSuccess"); AbDialogUtil.removeDialog(HttpActivity.this); AbDialogUtil.showAlertDialog(HttpActivity.this,"返回结果",content,new AbDialogOnClickListener(){ @Override public void onPositiveClick() { } @Override public void onNegativeClick() { } }); }; // 开始执行前 @Override public void onStart() { Log.d(TAG, "onStart"); //显示进度框 AbDialogUtil.showProgressDialog(HttpActivity.this,0,"正在查询..."); } // 失败,调用 @Override public void onFailure(int statusCode, String content, Throwable error) { AbDialogUtil.removeDialog(HttpActivity.this); AbToastUtil.showToast(HttpActivity.this,error.getMessage()); } // 完成后调用,失败,成功 @Override public void onFinish() { Log.d(TAG, "onFinish"); }; }); } }); //字节数组下载 byteBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String url = "http://img4.duitang.com/uploads/item/201405/28/20140528203047_y5Swe.thumb.700_0.jpeg"; mAbHttpUtil.get(url, new AbBinaryHttpResponseListener() { // 获取数据成功会调用这里 @Override public void onSuccess(int statusCode, byte[] content) { Log.d(TAG, "onSuccess"); AbDialogUtil.removeDialog(HttpActivity.this); Bitmap bitmap = AbImageUtil.bytes2Bimap(content); ImageView view = new ImageView(HttpActivity.this); view.setImageBitmap(bitmap); AbDialogUtil.showAlertDialog("返回结果",view,new AbDialogOnClickListener(){ @Override public void onPositiveClick() { } @Override public void onNegativeClick() { } }); } // 开始执行前 @Override public void onStart() { Log.d(TAG, "onStart"); //显示进度框 AbDialogUtil.showProgressDialog(HttpActivity.this,0,"正在查询..."); } // 失败,调用 @Override public void onFailure(int statusCode, String content, Throwable error) { AbDialogUtil.removeDialog(HttpActivity.this); AbToastUtil.showToast(HttpActivity.this,error.getMessage()); } // 完成后调用,失败,成功 @Override public void onFinish() { Log.d(TAG, "onFinish"); }; }); } }); //文件下载 fileDownBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String url = "http://img4.duitang.com/uploads/item/201405/28/20140528203047_y5Swe.thumb.700_0.jpeg"; mAbHttpUtil.get(url, new AbFileHttpResponseListener(url) { // 获取数据成功会调用这里 @Override public void onSuccess(int statusCode, File file) { Log.d(TAG, "onSuccess"); Bitmap bitmap = AbFileUtil.getBitmapFromSD(file); ImageView view = new ImageView(HttpActivity.this); view.setImageBitmap(bitmap); //下载完成取消进度框 AbDialogUtil.removeDialog(HttpActivity.this); AbDialogUtil.showAlertDialog("返回结果",view,new AbDialogOnClickListener(){ @Override public void onPositiveClick() { } @Override public void onNegativeClick() { } }); } // 开始执行前 @Override public void onStart() { Log.d(TAG, "onStart"); //打开进度框 View v = LayoutInflater.from(HttpActivity.this).inflate(R.layout.progress_bar_horizontal, null, false); mAbProgressBar = (AbHorizontalProgressBar) v.findViewById(R.id.horizontalProgressBar); numberText = (TextView) v.findViewById(R.id.numberText); maxText = (TextView) v.findViewById(R.id.maxText); maxText.setText(progress+"/"+String.valueOf(max)); mAbProgressBar.setMax(max); mAbProgressBar.setProgress(progress); mAlertDialog = AbDialogUtil.showAlertDialog("正在下载",v); } // 失败,调用 @Override public void onFailure(int statusCode, String content, Throwable error) { Log.d(TAG, "onFailure"); AbDialogUtil.removeDialog(HttpActivity.this); AbToastUtil.showToast(HttpActivity.this,error.getMessage()); } // 下载进度 @Override public void onProgress(long bytesWritten, long totalSize) { maxText.setText(bytesWritten/(totalSize/max)+"/"+max); mAbProgressBar.setProgress((int)(bytesWritten/(totalSize/max))); } // 完成后调用,失败,成功 public void onFinish() { Log.d(TAG, "onFinish"); }; }); } }); //文件上传 fileUploadBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //已经在后台上传 if(mAlertDialog!=null){ AbDialogUtil.showDialog(HttpActivity.this,mAlertDialog); return; } String url = "http://192.168.1.124:8080/demo/upload.do"; AbRequestParams params = new AbRequestParams(); try { //多文件上传添加多个即可 File pathRoot = Environment.getExternalStorageDirectory(); String path = pathRoot.getAbsolutePath(); params.put("data1","你好"); params.put("data2","100"); //参数随便加,在sd卡根目录放图片 File file1 = new File(path+"/1.jpg"); File file2 = new File(path+"/1.txt"); //文件名称可能是中文 params.put(file1.getName(),file1); params.put(file2.getName(),file2); //注意:框架默认将所有参数:URLDecoder.encode(fileName,HTTP.UTF_8) //所以服务端要解析中文要用到 URLDecoder.decode(fileName,HTTP.UTF_8) //只支持最多2个文件域,因为会产生流中断的异常,所以你需要传递更多,请分次数上传 //File file3 = new File(path+"/3.log"); //File file4 = new File(path+"/1.jpg"); //params.put(file3.getName(),file3); //params.put(file4.getName(),file4); } catch (Exception e) { e.printStackTrace(); } mAbHttpUtil.post(url, params, new AbStringHttpResponseListener() { @Override public void onSuccess(int statusCode, String content) { //下载完成取消进度框 AbDialogUtil.removeDialog(HttpActivity.this); AbToastUtil.showToast(HttpActivity.this,"onSuccess"); } // 开始执行前 @Override public void onStart() { Log.d(TAG, "onStart"); //打开进度框 View v = LayoutInflater.from(HttpActivity.this).inflate(R.layout.progress_bar_horizontal, null, false); mAbProgressBar = (AbHorizontalProgressBar) v.findViewById(R.id.horizontalProgressBar); numberText = (TextView) v.findViewById(R.id.numberText); maxText = (TextView) v.findViewById(R.id.maxText); maxText.setText(progress+"/"+String.valueOf(max)); mAbProgressBar.setMax(max); mAbProgressBar.setProgress(progress); mAlertDialog = AbDialogUtil.showAlertDialog("正在上传",v); } @Override public void onFailure(int statusCode, String content, Throwable error) { AbDialogUtil.removeDialog(HttpActivity.this); AbToastUtil.showToast(HttpActivity.this,error.getMessage()); } // 进度 @Override public void onProgress(long bytesWritten, long totalSize) { maxText.setText(bytesWritten/(totalSize/max)+"/"+max); mAbProgressBar.setProgress((int)(bytesWritten/(totalSize/max))); } // 完成后调用,失败,成功,都要调用 public void onFinish() { Log.d(TAG, "onFinish"); }; }); } }); } }