有了上面的源码调用过程其实就非常的清晰了..
无论是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;
}
}










