由上一篇的介绍,我们已经知道了,xUtils中有四大组件可以供我们使用,分别是ViewUtils、HttpUtils、BitmapUtils以及DbUtils。
如果你没能先读一下我的[上篇文章](http://blog.csdn.net/womengmengyan/article/details/48441299),那么请你移步过去先整体了解一下,再回过头来看这篇文章,相信你回更有体会的。
这里我们分别来介绍这四大组件:
一、HttpUtils
参考:http://blog.csdn.net/lanyeming2012/article/details/14209455#comments
HttpUtils是解决日常工作过程中繁杂的上传下载文件以及各种Get和post请求的必备工具类,这里仅介绍它的两个请求的方式HttpGet和HttPost方法。如果想要了解利用xUtils来下载文件和上传文件,请查看上面的网址,那位大神整理的相当全了哈。
HttpGet请求:
1.下载xUtils包:
只要使用xUtils框架,都需要导xUtils包,这里的导包和之前的volley导包是一样的,这里不再详细介绍。
2.获得HttpUtils对象
3.利用send方法发出请求
client.send(HttpRequest.HttpMethod.GET, "http://www.360.com", new RequestCallBack<String>() {
//连接成功时调用
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
mTextviewResponse.setText(responseInfo.result);
}
//连接失败时调用
@Override
public void onFailure(HttpException e, String s) {
Toast.makeText(getApplicationContext(), "连接失败", Toast.LENGTH_SHORT).show();
}
});
send方法,传入三个参数,分别是:请求方式;url地址;new请求返回的实例。最后一个参数需要重写方法onSuccess,在请求成功后调用这个方法。而其中的responseInfo.result可以返回服务器的返回信息
实例:
延伸:利用RequestParams带参数
通常的HttpGet请求会把一系列的请求参数挂在请求地址的后面,拖出一节长长的尾巴,十分的惹人厌,这里可以通过像HttpPost请求的参数那样组成一个类似BasicNameValuePair的对象直接封装到请求方法中去,省去拼接url的麻烦,同时也可以设置超时时间。
HttpPost请求:
httpPost的用法和httpGet的用法是一样的,这里仅用一个实例展示一下,不再介绍。
HttpUtils clientPost = new HttpUtils();//获得对象
//send方法进行连接
RequestParams parames = new RequestParams();
parames.addBodyParameter("username", "zhangsanyaya");
clientPost.send(HttpRequest.HttpMethod.POST,"http://192.168.0.30:8080/MyWebTest/MyTestServerlet",parames, new RequestCallBack<String>() {
//连接成功时调用
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
mTextviewResponse.setText(responseInfo.result);
}
//连接失败时调用
@Override
public void onFailure(HttpException e, String s) {
Toast.makeText(getApplicationContext(), "连接失败", Toast.LENGTH_SHORT).show();
}
});
二、ViewUtils
下面是一个大神的链接哈,大神讲的已经够详细,不过我再啰嗦一点。
参考:http://blog.csdn.net/lanyeming2012/article/details/14043685
ViewUtils可以完全使用注解的方式来完成UI的绑定和事件绑定。这样我们省去了findViewById这一步或者setonclickListener(this),当代码非常多时,我们会发现它的优势。
UI的绑定:@ViewInject
在定义UI控件之前加上注解@ViewInject(),传入参数是UI布局中的控件的id,这样省去了之后的findViewById,但不要忘了ViewUtils.inject(this)将UI与activity中定义的控件绑定。
事件的绑定:@OnClick
@OnClick({R.id.buttonxutilPost,R.id.buttonxutil})//注意位置,是在oncreate外面,onclick之前
使用@onClick,省去了setonclickListener(this)的使用,只需要将所有需要添加点击事件的按钮,添加到参数列表中,注意多个按钮时,需要将所有按钮id用花括号{ }括起来。
实例参考:
public class XUtilActivity extends Activity implements View.OnClickListener {
@ViewInject(R.id.buttonxutil)//1.加注解,其中是布局中的实例
private Button mButtonxUtil;
@ViewInject(R.id.buttonxutilPost)
private Button mButtonxutilPost;
@ViewInject(R.id.textviewResponse)
private TextView mTextviewResponse;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xutil);
ViewUtils.inject(this);//2.遍历注解,将注解中的实例findview添加到它定义的属性中
// mButtonxUtil.setOnClickListener(this);
// mButtonxutilPost.setOnClickListener(this);
}
@OnClick({R.id.buttonxutilPost,R.id.buttonxutil})//注意位置,是在oncreate外面,onclick之前
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.buttonxutil:
……
break;
………………