作者:Bgwan
链接:https://zhuanlan.zhihu.com/p/22573081
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

an框架的网络框架是完全基于Xutils3.0以上的,这里需要感谢前辈/wyouflf/xUtils3的无私奉献。

Begin

使用方法:

  1. compile 'com.github.qydq:an-maven-base:0.0.9'

DXUtils,XProgressCallBack和XCallBack是an框架提供的辅助类。

1.得到以Xml的形式返回的数据

  1. private void getxml() {
  2. String url = "http://flash.weather.com.cn/wmaps/xml/china.xml";
  3. DXUtils.Get(url, null, new XCallBack<String>() {
  4. @Override
  5. public void onSuccess(String xmlString) {
  6. super.onSuccess(xmlString);
  7. try {
  8. XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
  9. XmlPullParser xmlPullParser = factory.newPullParser();
  10. xmlPullParser.setInput(new StringReader(xmlString));
  11. int eventType = xmlPullParser.getEventType();
  12. while (eventType != XmlPullParser.END_DOCUMENT) {
  13. switch (eventType) {
  14. case XmlPullParser.START_TAG:
  15. String nodeName = xmlPullParser.getName();
  16. if ("city".equals(nodeName)) {
  17. String pName = xmlPullParser.getAttributeValue(0);
  18. Log.e("TAG", "city is " + pName);
  19. showToast("city is:" + pName + "weather is");
  20. }
  21. break;
  22. }
  23. eventType = xmlPullParser.next();
  24. }
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. @Override
  30. public void onError(Throwable ex, boolean isOnCallback) {
  31. super.onError(ex, isOnCallback);
  32. }
  33. });
  34. }

2.下载带进度的文件

  1. private void downloadprogressfile() {
  2. //文件下载地址
  3. String url = "";
  4. //文件保存在本地的路径
  5. String filepath = "";
  6. DXUtils.DownLoadFile(url, filepath, new XProgressCallBack<File>() {
  7. @Override
  8. public void onSuccess(File result) {
  9. super.onSuccess(result);
  10. showToast("result:" + result.toString());
  11. }
  12. @Override
  13. public void onError(Throwable ex, boolean isOnCallback) {
  14. super.onError(ex, isOnCallback);
  15. }
  16. });
  17. }

3.下载普通类型的文件

  1. private void downloadfile() {
  2. //文件下载地址
  3. String url = "";
  4. //文件保存在本地的路径
  5. String filepath = "";
  6. DXUtils.DownLoadFile(url, filepath, new XCallBack<File>() {
  7. @Override
  8. public void onSuccess(File result) {
  9. super.onSuccess(result);
  10. showToast("result:" + result.toString());
  11. }
  12. @Override
  13. public void onError(Throwable ex, boolean isOnCallback) {
  14. super.onError(ex, isOnCallback);
  15. }
  16. });
  17. }

4.上传文件

  1. /**
  2. * 上传文件(支持多文件上传)
  3. */
  4. private void uploadfile() {
  5. //图片上传地址
  6. String url = "";
  7. Map<String, Object> map = new HashMap<>();
  8. //传入自己的相应参数
  9. //map.put(key, value);
  10. //map.put(key, value);
  11. DXUtils.UpLoadFile(url, map, new XCallBack<String>() {
  12. @Override
  13. public void onSuccess(String result) {
  14. super.onSuccess(result);
  15. showToast("result:" + result);
  16. }
  17. @Override
  18. public void onError(Throwable ex, boolean isOnCallback) {
  19. super.onError(ex, isOnCallback);
  20. }
  21. });
  22. }

5.an框架提供的Get请求

  1. private void get() {
  2. String url = "http://api.k780.com:88/?app=idcard.get";
  3. Map<String, String> map = new HashMap<>();
  4. map.put("appkey", "10003");
  5. map.put("sign", "b59bc3ef6191eb9f747dd4e83c99f2a4");
  6. map.put("format", "json");
  7. map.put("idcard", "110101199001011114");
  8. DXUtils.Get(url, map, new XCallBack<PersonInfoBean>() {
  9. @Override
  10. public void onSuccess(PersonInfoBean result) {
  11. super.onSuccess(result);
  12. Log.e("result", result.toString());
  13. showToast("result:" + result.getResult());
  14. }
  15. @Override
  16. public void onError(Throwable ex, boolean isOnCallback) {
  17. super.onError(ex, isOnCallback);
  18. }
  19. });
  20. }

6.an框架提供的Post请求

  1. private void post() {
  2. String url = "http://api.k780.com:88/?app=idcard.get";
  3. Map<String, Object> map = new HashMap<>();
  4. map.put("appkey", "10003");
  5. map.put("sign", "b59bc3ef6191eb9f747dd4e83c99f2a4");
  6. map.put("format", "json");
  7. map.put("idcard", "110101199001011114");
  8. DXUtils.Post(url, map, new XCallBack<PersonInfoBean>() {
  9. @Override
  10. public void onSuccess(PersonInfoBean result) {
  11. super.onSuccess(result);
  12. Log.e("result", result.toString());
  13. showToast("result,信息:" + result.getMsgid());
  14. }
  15. @Override
  16. public void onError(Throwable ex, boolean isOnCallback) {
  17. super.onError(ex, isOnCallback);
  18. }
  19. });
  20. }
  21. End

Android 利用an框架快速实现网络请求(含下载上传文件)的更多相关文章

  1. AFNetworking网络请求与图片上传工具(POST)

    AFNetworking网络请求与图片上传工具(POST) .h文件 #import <Foundation/Foundation.h> /** 成功Block */ typedef vo ...

  2. Android必知必会-使用okhttp的PUT方式上传文件

    注:如果移动端排版有问题,请看 简书版 (<-点击左边),希望CSDN能更好的支持移动端. 背景 公司的文件上传接口使用PUT协议,之前一直用的都是老项目中的上传类,现在项目中使用了okhttp ...

  3. Django框架 之 Form表单和Ajax上传文件

    Django框架 之 Form表单和Ajax上传文件 浏览目录 Form表单上传文件 Ajax上传文件 伪造Ajax上传文件 Form表单上传文件 html 1 2 3 4 5 6 7 <h3& ...

  4. WP8.1 Study17:网络之后台下载/上传及HttpClient

    一.后台下载/上传 1.简介 使用BackgroundTransferGroup可以十分方便操作上传及下载文件,BackgroundDownloader和BackgroundUploader类中的方法 ...

  5. express搭建web服务器、路由、get、post请求、multer上传文件、EJS模板引擎的使用

    express官网 postman工具下载地址  multer的npm文档地址 express模板引擎怎么使用  地址:http://www.expressjs.com.cn/guide/using- ...

  6. .net 模拟发起HTTP请求(用于上传文件)

    用C#在服务端发起http请求,附上代码一 /// <summary> /// 文件帮助类 /// </summary> public class FileHelper { / ...

  7. httpclient请求接口,上传文件附加参数(.net core)

    /// <summary> /// 上传文件 - 武汉站点 /// </summary> [HttpPost] public IActionResult UploadWH(Re ...

  8. Android 利用an框架快速实现夜间模式的两种套路

    作者:Bgwan链接:https://zhuanlan.zhihu.com/p/22520818来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 网上看到过大多实现夜间模 ...

  9. H5 FormData对象的使用——进行Ajax请求并上传文件

    XMLHttpRequest Level2 添加了一个新的接口——FormData .[ 主要用于发送表单数据,但也可以独立使用于传输键控数据.与普通的Ajax相比,它能异步上传二进制文件 ] 利用F ...

随机推荐

  1. Zabbix自动发现与自动注册.

    一, 自动发现与自动注册 自动发现? 当场景中出现要添加很多台主机的时候,一台台添加难免太过于繁琐,zabbix提供自动注册,自动发现,可以实现主机的批量添加, zabbix的发现包括三种类型: # ...

  2. Elasticsearch之marvel(集群管理、监控)插件安装之后的浏览详解

    前提 Elasticsearch之插件介绍及安装 https://i.cnblogs.com/posts?categoryid=950999&page=2  (强烈建议,从头开始看) 比如,我 ...

  3. Vue中Mixins使用

    mixins是一种分发Vue组件中可复用功能的一种灵活方式. mixins是一个JavaScript对象,可以包含组件中的任意选项,比如Vue实例中生命周期的各个钩子函数,也可以是data.compo ...

  4. rpm---rpm包管理

    rpm命令是RPM软件包的管理工具.rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐受到其他发行版的采用.RPM ...

  5. Effective C++ 条款43

    学习处理模板化基类里的名称 本节作者编写的意图在我看来能够总结成一句话,就是"怎样定义并使用关于模板类的派生过程,怎样处理派生过程出现的编译不通过问题". 以下我们看一段说明性的代 ...

  6. 洛谷P2660 zzc 种田

    题目背景 可能以后 zzc就去种田了. 题目描述 田地是一个巨大的矩形,然而zzc 每次只能种一个正方形,而每种一个正方形时zzc所花的体力值是正方形的周长,种过的田不可以再种,zzc很懒还要节约体力 ...

  7. c#的中英文混合字符串截取

    public class StringHelper     {         public static string GetSubString(string str, int len)       ...

  8. 【2017中国大学生程序设计竞赛 - 网络选拔赛】A Secret

    [链接]http://acm.hdu.edu.cn/showproblem.php?pid=6153 [题意] ,S2中出现的次数与其长度的乘积之和.  [题解] 扩展KMP的模板题. 首先,把S2和 ...

  9. HDU——T 1576 A/B

    http://acm.hdu.edu.cn/showproblem.php?pid=1576 Time Limit: 1000/1000 MS (Java/Others)    Memory Limi ...

  10. Flask项目之手机端租房网站的实战开发(七)

    说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/8 ...