1. DhNet net=new DhNet("路劲");
  2. net.addParam("key", "参数")
  3. .addParam("key2", "参数2");
  4. .doGet(new NetTask(this) {
  5. @Override
  6. public void doInUI(Response response, Integer transfer) {
  7. //处理返回结果
  8. }
  9. });
上面是最常用的使用方法
创建一个dhnet对象  dhnet对象大多数方法是支持链式操作;
添加参数addParam的值可以为任意对象,如果非空会调用toString方法,

  1. 如果参数为为textview或其子类或调用方法getText().toString();
 
get或post方法
可以调用

  1. net.setMethod("get或post")
  2. 或者
  3. net.doGet(new NetTask(this){xxx});
  4. net.doPost(new NetTask(this){xxx})

关于对话框

  1. net.doGetInDialog(new NetTask(this) {xxx});//get同时打开一个对话框
  2. net.doPostInDialog(new NetTask(this) {xxx});//post同时打开一个对话框
  3. net.doGet(true, new NetTask(this) {xxx});//第一个参数是否显示对话框
 
对话框中的文字默认get时为 加载中...,post是为提交中...
如果想重写

  1. net.setDialogerMsg("对话框信息");

下面看NetTask回调类
主要的几个方法

  1. //当发生错误时回调这个回调是在UI线程中
  2. public void onErray(Response response)
  3. //返回数据后会现在后台处理
  4. public void doInBackground(Response response1)
  5. //最后会在ui线程处理
  6. public void doInUI(Response response, Integer transfer)
有事在doInBackground处理过程中就需要处理UI这时可以

  1. //在doInBackground添加代码
  2. public void doInBackground(Response response) {
  3. super.doInBackground(response);
  4. //在response中添加传递的对象
  5. response.addBundle("key", "对象传递");
  6. //传递到UI,第二个参数为自定义编码
  7. transfer(response, 100);
  8. }
  9. //在doInUI中
  10. public void doInUI(Response response, Integer transfer) {
  11. if(transfer==100){
  12. //获取传递的对象
  13. Object obj=response.getBundle("key")
  14. }
  15. }
 
下面来看response对象
response对象指返回的数据
response方法很多

  1. String res=response.plain()//可以获取网络访问的纯文本
当然我们基本网络访问都是json

JSONObject jo=response.jSON()//可以返回网络访问的json对象

网络默认最佳返回格式,当然不是必须的

  1. {
  2. success:true,
  3. msg:'消息内容',
  4. code:'error'
  5. data:{}
  6. }
对应的配置
下面是Const中的配置你可以进行覆盖

  1. {
  2. success:true,
  3. msg:'消息内容',
  4. code:'error'
  5. data:{}
  6. }

有了这些后

  1. //假设返回的结果
  2. {success:true,
  3. data:{
  4. user:{
  5. id:1212,
  6. name:'tengzhinei'
  7. }
  8. },
  9. articles:[
  10. {id:1},
  11. {id:2}
  12. ]
  13. }
  14. //json处理
  15. boolean success=response.isSuccess();//是否成功,
  16. JSONObject jo = response.jSONFromData();//获取data节点下的对象
  17. JSONObject data = response.jSONFrom("data");;//获取data节点下的对象
  18. JSONObject user = response.jSONFrom("data.user");//获取data.user节点下的对象
  19. JSONArray array = response.jSONArrayFrom("data.articles");//获取data.articles节点下的数组
  20. //也可以直接将json转为bean
  21. User user = response.modelFrom("data.user",User.class);//可以直接获取到user对象(这边使用了泛型)
  22. List<Article> articles = response.listFrom(User.class, "data.articles")//获取对象数组
 
response 很强大吧
这里在顺便说一下ViewUtil 和JSONUtil
下面是我喜欢使用的数据绑定方法

  1. ViewUtil.bindView(findViewById(R.id.time), JSONUtil.getLong(jo, "time"),"time");
  2. //第一个参数view 可以为textview或其子类 ,imageView//如果是imageview 如果第二个参数是字符串会自动下载图片,如果是drawable,bitmap,int或获取直接绑定图片
  3. //第二个数 数据
  4. //第三个数 数据修饰 //这里将数据修饰为时间类型,具体修饰问题在后面讲adapter再讲吧
继续,说过dhnet自带强大的网络缓存下面就说怎么使用吧

  1. DhNet net=new DhNet();
  2. net.setUrl("http://youxianpei.c.myduohuo.com/mobile_index_adbjsonview?id=63&temp=cache_net_error");
  3. //看这里使用缓存策略
  4. net.useCache(CachePolicy.POLICY_ON_NET_ERROR);
  5. net.doGet(new NetTask(getActivity()) {
  6. @Override
  7. public void doInUI(Response response, Integer transfer) {
  8.  
  9. //response有方法判断这次结果是不是缓存
  10. if (!response.isCache()) {
  11. dialoger.showToastShort(getActivity(), "这次访问不是使用的缓存,断开网络试试看");
  12. }else{
  13. dialoger.showToastShort(getActivity(), "网络访问失败,这次使用的是缓存");
  14. }
  15. }
  16. });
  1. net.useCache(CachePolicy.XXX);//就可以添加缓存策略了
  2.  
  3. 现在有的缓存策略
  4. //不使用缓存
  5. POLICY_NOCACHE;
  6. //只使用缓存
  7. POLICY_CACHE_ONLY;
  8. //先使用缓存,然后获取但是获取的数据只会缓存起来
  9. POLICY_CACHE_AndRefresh;
  10. //当网络不好时,才会使用缓存
  11. POLICY_ON_NET_ERROR;
  12. //先使用缓存,然后获取,获取后会再使用
  13. POLICY_BEFORE_AND_AFTER_NET;
  14.  
  15. 这些缓存策略都好理解,唯一需要说的POLICY_BEFORE_AND_AFTER_NET
  16. 其他策略的doInBackgrounddoInUI只会被回调一次
  17. 但是POLICY_BEFORE_AND_AFTER_NET
  18. doInBackgrounddoInUI 可能 会被回调两次,一次是上次缓存(如果上次没缓存当然不会回调),一次真正的网络获取的数据
  19. //网络缓存简单吧
在告诉大家一个秘籍

  1. Const.net_error_try=true;
如果这个值被设为true,在doInBackground和doInUI中发生的错误都会被try-catch掉主要是项目上线后,
项目开发过程中还是false 吧
下面文件上传

  1. DhNet net=new DhNet("路径");
  2. net.addParam("key1", "参数1")
  3. .addParam("key2", "参数2").upload("文件参数名", file, new NetTask(this) {
  4. @Override
  5. public void doInUI(Response response, Integer transfer) {
  6. if (response.isSuccess()) {
  7. Boolean uploading = response.getBundle("uploading");
  8. if (!uploading) {
  9. //上传完成
  10. }else{
  11. //已上传大小
  12. long length= response.getBundle("length");
  13. //文件总大小
  14. long total= response.getBundle("total");
  15. }
  16. }
  17. }
  18. });

//上面的代码就是文件上传了,主要就是使用upload方法
在doInUI会被多次回调用来处理进度,response中有uploading,length,total三个参数用来判断进度
  最后文件下载

  1. //文件下载需要注入
  2. @Inject
  3. DownLoadManager downloader;
  4. //启动下载
  5. downloader.download("任务编码","路劲",params,"本地保存路径");//第三个参数附加参数
  6. //注册下载监听
  7. downloader.regeisterCallBack("任务编码",downLoadCallBack);
  8. //取消下载监听
  9. downloader.unregeisterCallBack("任务编码");

可以在activity的onResume监听,onStop中取消监听  特别是一些需要在listview 中显示下载进度的
  关于同步网络访问,这些不说

  1. NetUtil.sync(url, method, params);
  2. NetUtil.syncStream(url, method, params);
  再底层

  1. HttpManager.execute(HttpGet);
Dhnet 网络就这些东西,基本涉及到网络的方方面面

dhroid - DhNet 网络http工具的更多相关文章

  1. [No00006B]方便的网络下载工具wget 可下载网站目录下的所有文件(可下载整个网站)

    wget是linux下命令行的下载工具,功能很强大,它能完成某些下载软件所不能做的,比如如果你想下载一个网页目录下的所有文件,如何做呢?网络用户有时候会遇到需要下载一批文件的情况,有时甚至需要把整个网 ...

  2. TCP/UDP网络性能测试工具 - Netperf (zz) ..网络测试工具

    在构建或管理一个网络系统时,我们更多的是关心网络的可用性,即网络是否连通,而对于其整体的性能往往考虑不多. 除了netperf以外.       还有很多其它的网络性能测试工具.       如db, ...

  3. 网络性能测试工具iperf详细使用图文教程

      Iperf是一个网络性能测试工具.Iperf可以测试TCP和UDP带宽质量.Iperf可以测量最大TCP带宽,具有多种参数和UDP特性. Iperf可以报告带宽,延迟抖动和数据包丢失.利用Iper ...

  4. [转]网络诊断工具:MTR

    MTR是Linux平台上一款非常好用的网络诊断工具,集成了traceroute.ping.nslookup的功能,用于诊断网络状态非常有用.能按要求对路由中所有节点进行批量测试 第一列(Host):I ...

  5. Linux网络统计工具/命令

    我在Linux(基于CentOS 或者 Debian 的发行版)中该如何查看当前网络端口吞吐量的统计信息?在Linux操作系统中如何查看当前内核snmp计数器以及网络端口的统计信息? 你可以使用以下任 ...

  6. 网络性能测试工具iperf详细使用图文教程【转载】

    原文:http://blog.163.com/hlz_2599/blog/static/142378474201341341339314/ 参考:http://man.linuxde.net/iper ...

  7. 网络攻防工具介绍——Wireshark

    网络攻防工具介绍 Wireshark 简介 Wireshark(前称Ethereal)是一个网络封包分析软件.它是一个理想的开源多平台网络协议分析工具.网络封包分析软件的功能是撷取网络封包,并尽可能显 ...

  8. IOS开发之网络开发工具

    IOS开发之网络开发工具 做移动端开发  常常会涉及到几个模块:1.网络检測   2.网络请求get和post请求  3.文件上传  4.文件下载   5.断点续传 如今将这些一一分享给大家 ,也欢迎 ...

  9. 基于Android Volley的网络请求工具

    基于Android Volley的网络请求工具. 一.说明 AndroidVolley,Android Volley核心库及扩展工程.AndroidVolleySample,网络请求工具示例工程.Re ...

随机推荐

  1. 通过phoenix在hbase上创建二级索引,Secondary Indexing

    环境描述: 操作系统版本:CentOS release 6.5 (Final) 内核版本:2.6.32-431.el6.x86_64 phoenix版本:phoenix-4.10.0 hbase版本: ...

  2. 第二种方式,修改python unittest的执行顺序,使用猴子补丁

    1.按照测试用例的上下顺序,而不是按方法的名称的字母顺序来执行测试用例. 之前的文章链接 python修改python unittest的运行顺序 之前写的,不是猴子补丁,而是要把Test用例的类名传 ...

  3. java图片裁剪和java生成缩略图

    一.缩略图 在浏览相冊的时候.可能须要生成相应的缩略图. 直接上代码: public class ImageUtil { private Logger log = LoggerFactory.getL ...

  4. 手机APP支付--整合银联支付控件

    长话短说,本文根据银联官方说明文档,简单总结下,并且说明下中途碰到问题该如何解决. 一.开发前的准备工作1. 打开https://open.unionpay.com/,后续说的文档下载.FAQ查询等都 ...

  5. 关于openssl的编译与使用

    关于openssl的编译与使用,可以参考这两往篇文章 http://blog.csdn.net/lazyclough/article/details/7456131 http://www.leaves ...

  6. MySQL用户认证及权限控制

    一.MySQL用户认证: 登录并不属于访问控制机制,而属于用户身份识别和认证: 1.用户名—user 2.密码—password 3.登录mysqld主机—host 实现用户登录MySQL,建立连接. ...

  7. str.split()与re.split()的区别

    str.split(): >>>'hello, world'.split() >>>['hello,','world'] >>>'hello, w ...

  8. 转载 IMP时数据库的IO性能监控,并提供IOPS的计算方法

     IMP时数据库的IO性能监控,并提供IOPS的计算方法 2011-07-15 17:36:10 分类: Linux [root@ntkdb oradata]# iostat -x 1 10     ...

  9. 【代码审计】QYKCMS_v4.3.2 后台down.php页面代码执行漏洞分析

      0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...

  10. iOS开发--NSDateFormatter

    NSDate对象包含两个部分,日期(Date)和时间(Time).格式化的时间字符串主要也是针对日期和时间的 1.基础用法 NSDate* now = [NSDate date]; NSDateFor ...