最近几天学习了好多种网络连接的方式,为了更好地区分他们,这里简单说明一下,所有的网络连接都是基于我们的TCP/IP模式进行的,从开始的URLConnection到HttpUrlconnection、HttpClient、Volley、HttpUtils全部都是。其中HttpUrlconnection、HttpClient是apache推出的封装类,但是二者在Android上不很适合,goole之后就抛弃了这两种方法,在2013年推出了Volley,Volley对上面的两种连接进行了进一步封装,使它本身的使用上更加简洁。但是上面三种方式都不支持大文件的上与下载因此又出现了HttpUtils。

一、HttpUtils的简单介绍  

1、xUtils详细介绍 
2、说明:
     ●xUtils 包含了很多实用的android工具。
     ●xUitls 最低兼容android 2.2 (api level 8)
     ●xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响…
3、注意:在使用HttpU的时候要导入jar包(可以从忘上下载到)
(1)Eclipse:直接将jar包复制到libs目录下
(2)Android Studio:app—>open Module settings—>Dependencies—>+ 把包导入就可以了

二、HttpUtils 的GET与POST

由于HttpUtils 是再一次进行封装过的,因此使用起来十分方便。HttpUtils 的GET与POST的都只需要两行代码。

2.1GET

在RequestCallBack中还要实现它的两个方法(连接成功与连接失败)。

HttpUtils util=new HttpUtils();util.send(Method, url,new RequestCallBack<T>(){});

2.2POST

    HttpUtils client =new HttpUtils();    client.send(Method, url,params, new RequestCallBack<String>() {});

注:post方法中传递的参数params需要我们自己new一个RequestParams

RequestParams params=new RequestParams();    params.addBodyParameter(K,V);

2.3具体代码

2.3.1Get代码段

HttpUtils util=new HttpUtils();        util.send(HttpMethod.GET, "http://www.baidu.com",new RequestCallBack<String>() {            @Override            public void onSuccess(ResponseInfo<String> arg0) {                medit_content.setText(arg0.result);            }            @Override            public void onFailure(HttpException arg0, String arg1) {                medit_content.setText(arg0.toString());            }        });

2.3.2Post代码段

HttpUtils client =new HttpUtils();    RequestParams params=new RequestParams();    params.addBodyParameter("username","哈哈");    client.send(HttpMethod.POST, "http://192.168.0.30:8080/MyWebTest/MyTestServerlet",params, new RequestCallBack<String>() {        @Override        public void onFailure(HttpException arg0, String arg1) {            medit_content.setText(arg0.toString());        }        @Override        public void onSuccess(ResponseInfo<String> arg0) {            medit_content.setText(arg0.result);        }    });

三、HttpUtils 的注解

  HttpUtils 的注解帮我们省掉了findViewById();和监听点击事件,帮我们简化了许多代码,在本文开始部分给出的官方的实例里面我们也可以看到注解的使用方式。

3.1简化findViewById()  

示例:
(1)将要寻找的view进行注解

@ViewInject (R.id.btn_util_con)private Button btn_xutil_con_get;@ViewInject(R.id.btn_util_con_post)private Button btn_xutil_con_post;

(2)在onCreate方法中添加下面一行代码就可以代替所有的findViewById() 了

 ViewUtils.inject(this);

3.2简化setOnClickListener

在onClick方法上面写上下面的注解代替setOnClickListener的监听事件

@OnClick({R.id.btn_util_con,R.id.btn_util_con_post})   

四、完整代码

public class XUtil_http extends Activity implements OnClickListener{    @ViewInject (R.id.btn_util_con)    private Button btn_xutil_con_get;    @ViewInject(R.id.btn_util_con_post)    private Button btn_xutil_con_post;    @ViewInject(R.id.textview_xutil)    private TextView medit_content;   @Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_xutil);    ViewUtils.inject(this);// btn_xutil_con_get.setOnClickListener(this);// btn_xutil_con_post.setOnClickListener(this);}@OnClick({R.id.btn_util_con,R.id.btn_util_con_post})   @Overridepublic void onClick(View v) {    switch (v.getId()) {    case R.id.btn_util_con:        HttpUtils util=new HttpUtils();        util.send(HttpMethod.GET, "http://www.baidu.com",new RequestCallBack<String>() {            @Override            public void onSuccess(ResponseInfo<String> arg0) {                medit_content.setText(arg0.result);            }            @Override            public void onFailure(HttpException arg0, String arg1) {                medit_content.setText(arg0.toString());            }        });        break;    case R.id.btn_util_con_post:        doPost();        break;    default:        break;    }}private void doPost() {    HttpUtils client =new HttpUtils();    RequestParams params=new RequestParams();    params.addBodyParameter("username","哈哈");    client.send(HttpMethod.POST, "http://192.168.0.30:8080/MyWebTest/MyTestServerlet",params, new RequestCallBack<String>() {        @Override        public void onFailure(HttpException arg0, String arg1) {            medit_content.setText(arg0.toString());        }        @Override        public void onSuccess(ResponseInfo<String> arg0) {            medit_content.setText(arg0.result);        }    });}}

更多相关文章

  1. 探秘ListView的ConvertView以及ViewHolder原理
  2. [android] Proguard代码混淆器如何排除指定的类或子类
  3. Support Annotation Library使用详解
  4. 阿里云消息队列MQTT踩坑之路(阿里云MQTT Android客户端)
  5. 菜鸟进阶之Android(安卓)Touch事件传递(一)
  6. Android应用《撕开美女衣服》的实现过程及源代码
  7. 4.2以上版本的sdk使用webview js和java代码交互必须加注解才能生
  8. android通过指定目录获取该目录下所有类(反编译)
  9. Android字符串进阶之一(特殊字符的输入)

随机推荐

  1. Android初学笔记1
  2. android常用开源库分享
  3. blog  android
  4. android AlertDialog自定义全屏显示
  5. IntentService简介
  6. android开发 典型网站客户端
  7. Android(安卓)textview maxEms与maxLengt
  8. Android(java)学习笔记80:UDP协议发送数据
  9. Android 8怎么修改USB默认为MTP
  10. android:configChanges="keyboard|keyboa