Android AndBase框架使用封装好的函数完成Http请求(三)

2019-12-10 18:34:49刘景俊

 有了上面的源码调用过程其实就非常的清晰了..

  无论是doGet()方法还是doPost()方法模式基本是相同的,都是需要先建立一个连接对象,HttpGet或HttpPost..不同之处在于有参的Get请求直接将params加入到url后面即可,而Post请求需要获取实体数据..在实体数据中加入我们传递的params..设置连接过程和读取数据过程中的相关参数,比如说超时的时间,使用的Http版本,设置UserAgent等等...设置完之后执行请求获取响应了...

  中间涉及到了一个判断的过程..判断返回的响应数据到底属于什么类型的数据,是基本的String类型,还是与图片或者视频相关的Byte类型,还是与文件相关的File类型...通过对相关类型的判断,执行不同的方法,虽然方法不相同,但是最后的目的是一样的,都是把实体数据进行封装...封装完毕后调用sendSuccessMessage然后Handler自动回去处理Message...最后调用OnSuccess方法..将数据返回给客户端..

  还是看一下实际的调用过程:

  无参的Get请求调度,这里需要设置相应监听:

public void FileClick(View v){
 url="http://www.easck.com/JSP/imageview.jpg";
 getView();
 httpUtil.get(url, new FileResponseListener(this, this, v,max_tv,num_tv,progressBar));
}
 GetResponseListener.java

  对响应的监听的一个重写过程...通过为请求设置上url+相关监听就能够完成网络请求,并对请求数据进行相关处理了...这里完成了一个图片数据的下载,然后通过对数据进行封装,就成了一个Bitmap..这样就能够在控件上进行显示了..

 

package com.example.andbasehttp;

import java.io.File;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Bitmap;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.ab.activity.AbActivity;
import com.ab.http.AbFileHttpResponseListener;
import com.ab.util.AbFileUtil;
import com.ab.view.progress.AbHorizontalProgressBar;

public class FileResponseListener extends AbFileHttpResponseListener{

 
 private int max=100;
 private int progress=0;
 private AbActivity activity;
 private Context context;
 private AlertDialog dialog;
 private View view;
 private TextView max_tv,num_tv;
 private AbHorizontalProgressBar progressBar;
 
 public FileResponseListener(AbActivity activity,Context context,View v,TextView v1,TextView v2, AbHorizontalProgressBar progressBar ){
  this.activity=activity;
  this.context=context;
  this.view=v;
  this.max_tv=v1;
  this.num_tv=v2;
  this.progressBar=progressBar;
 }
 
 @Override
 public void onSuccess(int statusCode, File file){
  Bitmap bitmap=AbFileUtil.getBitmapFromSD(file);
  ImageView view=new ImageView(context);
  view.setImageBitmap(bitmap);
  activity.showDialog("返回结果", view, new OnClickListener() {
   
   @Override
   public void onClick(DialogInterface dialog, int which) {
    // TODO Auto-generated method stub
    
   }
  });
 }
 
 @Override
 public void onFailure(int statusCode, String content,Throwable error){
  activity.showToast(error.toString());
 }
 
 @Override
 public void onStart(){
  max_tv.setText(progress+"/"+String.valueOf(max));
  progressBar.setMax(max);
  progressBar.setProgress(progress);
  dialog=activity.showDialog("正在下载", view);
 }
 
 @Override
 public void onProgress(int bytesWritten, int totalSize){
  max_tv.setText(bytesWritten/(totalSize/max)+"/"+max);
  progressBar.setProgress(bytesWritten/(totalSize/max));
 }
 
 @Override
 public void onFinish(){
  dialog.cancel();
  dialog=null;
 }
}