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

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

Begin

使用方法:

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

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

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

private void getxml() {
String url = "http://flash.weather.com.cn/wmaps/xml/china.xml";
DXUtils.Get(url, null, new XCallBack<String>() { @Override
public void onSuccess(String xmlString) {
super.onSuccess(xmlString);
try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xmlPullParser = factory.newPullParser();
xmlPullParser.setInput(new StringReader(xmlString));
int eventType = xmlPullParser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_TAG:
String nodeName = xmlPullParser.getName();
if ("city".equals(nodeName)) {
String pName = xmlPullParser.getAttributeValue(0);
Log.e("TAG", "city is " + pName);
showToast("city is:" + pName + "weather is");
}
break;
}
eventType = xmlPullParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
} @Override
public void onError(Throwable ex, boolean isOnCallback) {
super.onError(ex, isOnCallback);
} });
}

2.下载带进度的文件

private void downloadprogressfile() {
//文件下载地址
String url = "";
//文件保存在本地的路径
String filepath = "";
DXUtils.DownLoadFile(url, filepath, new XProgressCallBack<File>() { @Override
public void onSuccess(File result) {
super.onSuccess(result);
showToast("result:" + result.toString());
} @Override
public void onError(Throwable ex, boolean isOnCallback) {
super.onError(ex, isOnCallback); } });
}

3.下载普通类型的文件

private void downloadfile() {
//文件下载地址
String url = "";
//文件保存在本地的路径
String filepath = "";
DXUtils.DownLoadFile(url, filepath, new XCallBack<File>() {
@Override
public void onSuccess(File result) {
super.onSuccess(result);
showToast("result:" + result.toString()); } @Override
public void onError(Throwable ex, boolean isOnCallback) {
super.onError(ex, isOnCallback); } });
}

4.上传文件

/**
* 上传文件(支持多文件上传)
*/
private void uploadfile() {
//图片上传地址
String url = "";
Map<String, Object> map = new HashMap<>();
//传入自己的相应参数
//map.put(key, value);
//map.put(key, value);
DXUtils.UpLoadFile(url, map, new XCallBack<String>() { @Override
public void onSuccess(String result) {
super.onSuccess(result);
showToast("result:" + result);
} @Override
public void onError(Throwable ex, boolean isOnCallback) {
super.onError(ex, isOnCallback);
} }); }

5.an框架提供的Get请求

private void get() {
String url = "http://api.k780.com:88/?app=idcard.get";
Map<String, String> map = new HashMap<>();
map.put("appkey", "10003");
map.put("sign", "b59bc3ef6191eb9f747dd4e83c99f2a4");
map.put("format", "json");
map.put("idcard", "110101199001011114");
DXUtils.Get(url, map, new XCallBack<PersonInfoBean>() { @Override
public void onSuccess(PersonInfoBean result) {
super.onSuccess(result);
Log.e("result", result.toString());
showToast("result:" + result.getResult());
} @Override
public void onError(Throwable ex, boolean isOnCallback) {
super.onError(ex, isOnCallback); } });
}

6.an框架提供的Post请求

private void post() {
String url = "http://api.k780.com:88/?app=idcard.get";
Map<String, Object> map = new HashMap<>();
map.put("appkey", "10003");
map.put("sign", "b59bc3ef6191eb9f747dd4e83c99f2a4");
map.put("format", "json");
map.put("idcard", "110101199001011114");
DXUtils.Post(url, map, new XCallBack<PersonInfoBean>() { @Override
public void onSuccess(PersonInfoBean result) {
super.onSuccess(result);
Log.e("result", result.toString());
showToast("result,信息:" + result.getMsgid());
} @Override
public void onError(Throwable ex, boolean isOnCallback) {
super.onError(ex, isOnCallback); }
});
} 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. 18.链表管理内存实现c语言自动释放内存

    运行截图: 创建记录分配的内存地址大小和地址的结构体 struct MEM { void *p; int size; }; 创建管理内存结构体的链表 typedef struct LinkNode { ...

  2. ElasticSearch 工作原理

    ElasticSearch 工作原理图 文字说明,以后更新

  3. 分享一个关于js原型链的理解

    http://www.cnblogs.com/wyaocn/p/5815761.html

  4. LuoguP3254 圆桌问题(最大流)

    题目描述 假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为ri (i =1,2,……,m). 会议餐厅共有n 张餐桌,每张餐桌可容纳ci (i =1,2,……,n)个代表就餐. ...

  5. yum---rpm软件包管理器

    yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性 ...

  6. pwconv---pwunconv 密码投影

    pwconv命令用来开启用户的投影密码.Linux系统里的用户和群组密码,分别存放在名称为passwd和group的文件中, 这两个文件位于/etc目录下.因系统运作所需,任何人都得以读取它们,造成安 ...

  7. RGB 颜色空间转 HSI 颜色空间的matlab程序实现

    RGB 颜色空间转 HSI 颜色空间的matlab程序实现 2014.10.20之前的内容有误,这里依据wikipedia更新了算法内容. 算法以wiki为准 https://en.wikipedia ...

  8. Android Studio配置SVN 以及使用代码管理

    一.Android Studio配置SVN Android Studio关联配置SVN非常easy,在Settings里面.找到Version Control->Subversion.在这个页面 ...

  9. spring定时器完整

    介绍:在开发中,我们经常需要一些周期性就进行某一项操作.这时候我们就要去设置个定时器,Java中最方便.最高效的实现方式是用java.util.Timer工具类,再通过调度java.util.Time ...

  10. vue移动端上拉加载更多

    LoadMore.vue <template> <div class="load-more-wrapper" @touchstart="touchSta ...