package com.andbase.demo.activity; import android.graphics.Bitmap; import android.os.Bundle; import android.os.Environment; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import com.andbase.demo.R; import com.andbase.library.app.base.AbBaseActivity; import com.andbase.library.http.AbHttpUtil; import com.andbase.library.http.listener.AbBinaryHttpResponseListener; import com.andbase.library.http.listener.AbFileHttpResponseListener; import com.andbase.library.http.listener.AbStringHttpResponseListener; import com.andbase.library.http.model.AbRequestParams; import com.andbase.library.util.AbDialogUtil; import com.andbase.library.util.AbFileUtil; import com.andbase.library.util.AbImageUtil; import com.andbase.library.util.AbToastUtil; import com.andbase.library.util.AbViewUtil; import com.andbase.library.view.dialog.AbAlertDialogFragment; import com.andbase.library.view.progress.AbHorizontalProgressBar; import java.io.File; public class HttpActivity extends AbBaseActivity { private AbHttpUtil httpUtil = null; // ProgressBar进度控制 private AbHorizontalProgressBar progressBar; // 最大100 private int max = 100; private int progress = 0; private TextView numberText, maxText; private AbAlertDialogFragment alertDialog; private AbAlertDialogFragment uploadingDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_http); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); toolbar.setTitle(R.string.title_base); toolbar.setContentInsetsRelative(0, 0); toolbar.setNavigationIcon(R.drawable.ic_back); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); httpUtil = AbHttpUtil.getInstance(this); 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); //get请求 getBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 一个url地址 String url = "http://www.baidu.com"; httpUtil.get(url,new AbStringHttpResponseListener() { //获取数据成功会调用这里 @Override public void onSuccess(int statusCode, String content) { View view = View.inflate(HttpActivity.this,R.layout.view_alert_dialog,null); AbViewUtil.setText(view,R.id.dialog_title,"提示:"+statusCode); AbViewUtil.setText(view,R.id.dialog_message,content); Button button = AbViewUtil.findViewById(view,R.id.dialog_button); View linearLayout1= AbViewUtil.findViewById(view,R.id.btn_layout_1); View linearLayout2= AbViewUtil.findViewById(view,R.id.btn_layout_2); linearLayout1.setVisibility(View.VISIBLE); linearLayout2.setVisibility(View.GONE); button.setText("确定"); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AbDialogUtil.removeDialog(HttpActivity.this); } }); AbDialogUtil.showAlertDialog(view); } // 失败,调用 @Override public void onFailure(int statusCode, String content, Throwable error) { AbToastUtil.showToast(HttpActivity.this,error.getMessage()); } // 开始执行前 @Override public void onStart() { //显示进度框 AbDialogUtil.showProgressDialog(HttpActivity.this,0,"正在查询..."); } // 完成后调用,失败,成功 @Override public void onFinish() { AbDialogUtil.removeDialog(HttpActivity.this); }; }); } }); //带缓存的get请求 getCacheBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 一个url地址 String url = "http://www.baidu.com"; httpUtil.getWithCache(url, new AbStringHttpResponseListener() { //获取数据成功会调用这里 @Override public void onSuccess(int statusCode, String content) { View view = View.inflate(HttpActivity.this,R.layout.view_alert_dialog,null); AbViewUtil.setText(view,R.id.dialog_title,"提示:"+statusCode); AbViewUtil.setText(view,R.id.dialog_message,content); Button button = AbViewUtil.findViewById(view,R.id.dialog_button); View linearLayout1= AbViewUtil.findViewById(view,R.id.btn_layout_1); View linearLayout2= AbViewUtil.findViewById(view,R.id.btn_layout_2); linearLayout1.setVisibility(View.VISIBLE); linearLayout2.setVisibility(View.GONE); button.setText("确定"); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AbDialogUtil.removeDialog(HttpActivity.this); } }); AbDialogUtil.showAlertDialog(view); } // 失败,调用 @Override public void onFailure(int statusCode, String content, Throwable error) { AbToastUtil.showToast(HttpActivity.this,error.getMessage()); } // 开始执行前 @Override public void onStart() { //显示进度框 AbDialogUtil.showProgressDialog(HttpActivity.this,0,"正在查询..."); } // 完成后调用,失败,成功 @Override public void onFinish() { AbDialogUtil.removeDialog(HttpActivity.this); }; }); } }); //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"); httpUtil.post(url,params, new AbStringHttpResponseListener() { // 获取数据成功会调用这里 @Override public void onSuccess(int statusCode, String content) { View view = View.inflate(HttpActivity.this,R.layout.view_alert_dialog,null); AbViewUtil.setText(view,R.id.dialog_title,"提示:"+statusCode); AbViewUtil.setText(view,R.id.dialog_message,content); Button button = AbViewUtil.findViewById(view,R.id.dialog_button); View linearLayout1= AbViewUtil.findViewById(view,R.id.btn_layout_1); View linearLayout2= AbViewUtil.findViewById(view,R.id.btn_layout_2); linearLayout1.setVisibility(View.VISIBLE); linearLayout2.setVisibility(View.GONE); button.setText("确定"); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AbDialogUtil.removeDialog(HttpActivity.this); } }); AbDialogUtil.showAlertDialog(view); }; // 开始执行前 @Override public void onStart() { //显示进度框 AbDialogUtil.showProgressDialog(HttpActivity.this,0,"正在查询..."); } // 失败,调用 @Override public void onFailure(int statusCode, String content, Throwable error) { AbToastUtil.showToast(HttpActivity.this,error.getMessage()); } // 完成后调用,失败,成功 @Override public void onFinish() { AbDialogUtil.removeDialog(HttpActivity.this); }; }); } }); //字节数组(图片或文件也可)下载 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"; httpUtil.get(url, new AbBinaryHttpResponseListener() { // 获取数据成功会调用这里 @Override public void onSuccess(int statusCode, byte[] content) { Bitmap bitmap = AbImageUtil.bytes2Bimap(content); ImageView view = new ImageView(HttpActivity.this); view.setImageBitmap(bitmap); AbDialogUtil.showAlertDialog(view); } // 开始执行前 @Override public void onStart() { //打开进度框 View view = LayoutInflater.from(HttpActivity.this).inflate(R.layout.progress_bar_horizontal, null, false); progressBar = (AbHorizontalProgressBar) view.findViewById(R.id.progressBar); numberText = (TextView) view.findViewById(R.id.numberText); maxText = (TextView) view.findViewById(R.id.maxText); maxText.setText(progress+"/"+String.valueOf(max)); progressBar.setMax(max); progressBar.setProgress(progress); alertDialog = AbDialogUtil.showAlertDialog(view); } // 失败,调用 @Override public void onFailure(int statusCode, String content, Throwable error) { AbToastUtil.showToast(HttpActivity.this,error.getMessage()); } // 下载进度 @Override public void onProgress(long bytesWritten, long totalSize) { maxText.setText(bytesWritten/(totalSize/max)+"/"+max); progressBar.setProgress((int)(bytesWritten/(totalSize/max))); } // 完成后调用,失败,成功 @Override public void onFinish() { AbDialogUtil.removeDialog(HttpActivity.this); }; }); } }); //文件下载 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"; httpUtil.get(url, new AbFileHttpResponseListener() { // 获取数据成功会调用这里 @Override public void onSuccess(int statusCode, File file) { Bitmap bitmap = AbFileUtil.getBitmapFromSD(file); ImageView view = new ImageView(HttpActivity.this); view.setImageBitmap(bitmap); AbDialogUtil.showAlertDialog(view); } // 开始执行前 @Override public void onStart() { //打开进度框 View view = LayoutInflater.from(HttpActivity.this).inflate(R.layout.progress_bar_horizontal, null, false); progressBar = (AbHorizontalProgressBar) view.findViewById(R.id.progressBar); numberText = (TextView) view.findViewById(R.id.numberText); maxText = (TextView) view.findViewById(R.id.maxText); maxText.setText(progress+"/"+String.valueOf(max)); progressBar.setMax(max); progressBar.setProgress(progress); alertDialog = AbDialogUtil.showAlertDialog(view); } // 失败,调用 @Override public void onFailure(int statusCode, String content, Throwable error) { AbToastUtil.showToast(HttpActivity.this,error.getMessage()); } // 下载进度 @Override public void onProgress(long bytesWritten, long totalSize) { maxText.setText(bytesWritten/(totalSize/max)+"/"+max); progressBar.setProgress((int)(bytesWritten/(totalSize/max))); } // 完成后调用,失败,成功 public void onFinish() { AbDialogUtil.removeDialog(HttpActivity.this); }; }); } }); //文件上传 fileUploadBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //已经在后台上传 if(uploadingDialog!=null){ AbDialogUtil.showDialog(HttpActivity.this,uploadingDialog); 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(); } httpUtil.post(url, params, new AbStringHttpResponseListener() { @Override public void onSuccess(int statusCode, String content) { AbToastUtil.showToast(HttpActivity.this,"onSuccess"); } // 开始执行前 @Override public void onStart() { //打开进度框 View view = LayoutInflater.from(HttpActivity.this).inflate(R.layout.progress_bar_horizontal, null, false); progressBar = (AbHorizontalProgressBar) view.findViewById(R.id.progressBar); numberText = (TextView) view.findViewById(R.id.numberText); maxText = (TextView) view.findViewById(R.id.maxText); maxText.setText(progress+"/"+String.valueOf(max)); progressBar.setMax(max); progressBar.setProgress(progress); uploadingDialog = AbDialogUtil.showAlertDialog(view); } @Override public void onFailure(int statusCode, String content, Throwable error) { AbToastUtil.showToast(HttpActivity.this,error.getMessage()); } // 进度 @Override public void onProgress(long bytesWritten, long totalSize) { maxText.setText(bytesWritten/(totalSize/max)+"/"+max); progressBar.setProgress((int)(bytesWritten/(totalSize/max))); } // 完成后调用,失败,成功,都要调用 public void onFinish() { AbDialogUtil.removeDialog(HttpActivity.this); }; }); } }); } }