Android 网络连接:HttpUtils 的GET、POST与注解
2015-09-14 16:53
399 查看
最近几天学习了好多种网络连接的方式,为了更好地区分他们,这里简单说明一下,所有的网络连接都是基于我们的TCP/IP模式进行的,从开始的URLConnection到HttpUrlconnection、HttpClient、Volley、HttpUtils全部都是。其中HttpUrlconnection、HttpClient是apache推出的封装类,但是二者在Android上不很适合,goole之后就抛弃了这两种方法,在2013年推出了Volley,Volley对上面的两种连接进行了进一步封装,使它本身的使用上更加简洁。但是上面三种方式都不支持大文件的上与下载因此又出现了HttpUtils。
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—>+ 把包导入就可以了
注:post方法中传递的参数params需要我们自己new一个RequestParams
(1)将要寻找的view进行注解
(2)在onCreate方法中添加下面一行代码就可以代替所有的findViewById() 了
一、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中还要实现它的两个方法(连接成功与连接失败)。[code]HttpUtils util=new HttpUtils(); util.send(Method, url,new RequestCallBack<T>(){});
2.2POST
[code] HttpUtils client =new HttpUtils(); client.send(Method, url,params, new RequestCallBack<String>() {});
注:post方法中传递的参数params需要我们自己new一个RequestParams
[code]RequestParams params=new RequestParams(); params.addBodyParameter(K,V);
2.3具体代码
2.3.1Get代码段
[code]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代码段
[code]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进行注解
[code]@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() 了
[code] ViewUtils.inject(this);
3.2简化setOnClickListener
在onClick方法上面写上下面的注解代替setOnClickListener的监听事件[code]@OnClick({R.id.btn_util_con,R.id.btn_util_con_post})
四、完整代码
[code]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; @Override protected 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}) @Override public 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); } }); } }
相关文章推荐
- 网络连接之-xUtils框架(第三方通信框架)介绍(一)
- IOS网络第五天 AFN-01发送get和post请求
- 关于HTTPS的七个误解
- 【网络】(九)close与shutdown
- win10无法连接网络怎么办?Win10提示无法连接此网络的原因与解决方案
- IOS网络第四天 -网络文件上传(0923略)
- IOS网络第三天 - 01-网络文件下载(0922略)
- 网络地址转换NAT
- 图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)
- android手势识别(转) http://www.eoeandroid.com/thread-229581-1-1.html (出处: eoe 移动开发者论坛)
- 启用selinux后,php访问网络异常
- IOS网络第二天 - 09-多值参数
- IOS网络第二天 - 07-发送JSON给服务器
- IOS网络第二天 - 06-POST请求
- IOS网络第二天 - 05-黑酷-NSXMLparser解析(略)
- IOS网络第二天 - 04-黑酷-GDataXML 解析
- SGU326Perspective(网络流量的最大流量)(经典赛车模型)
- IOS网络第二天 - 03-JSON显示数据,调用本地视频播放,数据转模型
- Wireshark使用方法(学习笔记二——查询统计) http://www.2cto.com/Article/201201/115880.html
- android网络框架的封装——volley