nohttp


简历下载 2019-09-27 19:19:23 简历下载
[摘要](1) [nohttp]NoHttp详解之NoHttp最基本使用(无封装)目录(?)[+]NoHttp详解之NoHttp最基本使用(无封装)NoHttp是专门做Android网络请求与下载的框架,框架直播视频源码下载地址。本文章demo下载本文demo源码下载地址: http: downl

【www.shanpow.com--简历下载】

(1) [nohttp]NoHttp详解之NoHttp最基本使用(无封装)


目录(?)[+] NoHttp详解之NoHttp最基本使用(无封装)
NoHttp是专门做Android网络请求与下载的框架,框架直播视频源码下载地址。
本文章demo下载
本文demo源码下载地址: http://download.csdn.net/detail/yanzhenjie1003/9433888
本文的例子来自上面的demo中的OriginalActivity中。
代码
对于新手, 看别人封装好的代码允许要稍微吃力一点,尤其是一个框架,所以我们先看NoHttp最原始的使用方法:
public class OriginalActivity extends BaseActivity implements View.OnClickListener {
/**
* 用来标志请求的what, 类似handler的what一样,这里用来区分请求
*/
private static final int NOHTTP_WHAT_TEST = 0x001;
/**
* 请求的时候等待框
*/
private WaitDialog mWaitDialog;
/**
* 请求队列
*/
private RequestQueue requestQueue;
@Override
protected void onActivityCreate(Bundle savedInstanceState) {
setTitle(Application.getInstance().nohttpTitleList[0]);
setContentView(R.layout.activity_original);
// 按钮点击监听
findView(R.id.btn_start).setOnClickListener(this);
mWaitDialog = new WaitDialog(this);
// 创建请求队列, 默认并发3个请求, 传入数字改变并发数量: NoHttp.newRequestQueue(1);
requestQueue = NoHttp.newRequestQueue();
}
@Override
public void onClick(View v) {
// 创建请求对象
Request<String> request = NoHttp.createStringRequest(url, RequestMethod.POST);
// 添加请求参数
request.add("userName", "yolanda");
request.add("userPass", 1);
request.add("userAge", 1.25);
// 上传文件
request.add("userHead", new FileBinary(new File(path)));
// 添加请求头
request.addHeader("Author", "nohttp_sample");
// 设置一个tag, 在请求完(失败/成功)时原封不动返回; 多数情况下不需要
// request.setTag(object);
/*
* what: 当多个请求同时使用同一个OnResponseListener时用来区分请求, 类似handler的what一样
* request: 请求对象
* onResponseListener 回调对象,接受请求结果
*/
requestQueue.add(NOHTTP_WHAT_TEST, request, onResponseListener);
}
/**
* 回调对象,接受请求结果
*/
private OnResponseListener<String> onResponseListener = new OnResponseListener<String>() {
@SuppressWarnings("unused")
@Override
public void onSucceed(int what, Response<String> response) {
if (what == NOHTTP_WHAT_TEST) {// 判断what是否是刚才指定的请求
// 请求成功
String result = response.get();// 响应结果
// 响应头
Headers headers = response.getHeaders();
headers.getResponseCode();// 响应码
response.getNetworkMillis();// 请求花费的时间
}
}
@Override
public void onStart(int what) {
// 请求开始,显示dialog
mWaitDialog.show();
}
@Override
public void onFinish(int what) {
// 请求结束,关闭dialog
mWaitDialog.dismiss();
}
@Override
public void onFailed(int what, String url, Object tag, CharSequence error, int resCode, long ms) {
// 请求失败
...
}
};
@Override
protected void onDestroy() {
super.onDestroy();
requestQueue.cancelAll();// 退出APP时停止所有请求
requestQueue.stop();// 退出APP时停止队列
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101

(2) [nohttp]简单说说NoHTTP

简单说说NoHTTP   学习NoHttp的原因是由于公司之前做的产品使用的网络请求框架一直都是Volley(为什么使用Volley就不用多说了,最起码是谷歌开发团队自己搞的,总感觉权威一些),可是自从android6.0推出以后,Volley的使用开始有点动摇了。因为android6.0删除了HttpClient相关的API,我们知道的一般网络请求使用的API是HttpClient和URLConnection,而Volley就是基于HttpClient,虽然android2.3后2.3Volley可以解析URLConnection,但是部分解析URLConnection请求和响应还是用HttpClient的API。Google在android6.0删除HttpClient的缘由我们不去赘述,但是为此带来的问题就是可能在之后的版本中,volley的使用会存在一些问题,所以这个时候,公司觉得逐步用NoHttp(他是支持URLConnection的)取代Volley。
  那么问题来了,volley和nohttp的异同有那些呢??下面我是从http://blog.csdn.net/yanzhenjie1003截的图,对比比较全面:
  对比的东西就是上面那些,这里就不在一一分析了,接下来说的就是,如何使用nohttp:
  1、导包,这里就不在多说了,在androidstudio里面可以直接导入的。
  2、网络接口 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19    public static String URL = "http://192.168.1.210:8080/Today/";
   public static String SELECTMYCONTENT_URL=URL+"mycontent_select.php";
/**
    * 查找我的内容
    * @param mContext
    * @param begin
    * @param length
    * @param key
    * @param onResponseListener
    */
   public static void getSelectMyContentResult(Context mContext,String begin,String length,int key,
                                               OnResponseListener onResponseListener){
       Request<JSONObject> request=NoHttp.createJsonObjectRequest(SELECTMYCONTENT_URL,RequestMethod.POST);
       request.add("user_id",UserInfo.getUserId(mContext));
       request.add("begin",begin);
       request.add("length",length);
       request.addHeader("Author", "nohttp_sample");
       ServerApi.requestQueue.add(key, request, onResponseListener);
   }
  上面是我写的一个有关数据库查询的接口,里面的URL自定义,从服务器返回的数据是json格式的,向队列里添加的Request的参数是JSONObject。
  下面就接口的调用,其实很简单,由于这个网络接口写在ServerApi中,且接口是静态方法,所以调用的时候直接使用“类名.方法”就可以直接调用了。 1
2
3 ServerApi.getSelectMyContentResult(MyContentActivity.this, String.valueOf(begin),
                String.valueOf(length), NOHTTP_WHAT_TEST,
                onResponseListener);
  调用的时候传入相应的参数即可。
  接下就是写个OnResponseListener,其实这是一个数据回调对象,用于接收网络请求返回结果: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 private OnResponseListener<JSONObject> onResponseListenerAppData = new OnResponseListener<JSONObject>() {
        @SuppressWarnings("unused")
        @Override
        public void onSucceed(int what, Response<JSONObject> response) {
            if (what == NOHTTP_WHAT_TEST) {// 判断what是否是刚才指定的请求
                // 请求成功
                String result = response.get().toString();// 响应结果
                Log.d("TAGTAG",result);
                // 响应头
                Headers headers = response.getHeaders();
                headers.getResponseCode();// 响应码
                response.getNetworkMillis();// 请求花费的时间
            }
        }
        @Override
        public void onFailed(int i, String s, Object o, Exception e, int i1, long l) {
            Toast.makeText(MyContentActivity.this, "登录失败请重试", Toast.LENGTH_SHORT).show();
        }
        @Override
        public void onStart(int what) {
            // 请求开始,显示dialog
        }
        @Override
        public void onFinish(int what) {
            // 请求结束,关闭dialog
        }
    };
  如上,在对调对象中,明确的声明了网络请求开始、结束、成功、失败相对应的方法,相应的操作写在方法中即可。
  同时在上面的代码中有个常量:NOHTTP_WHAT_TEST。这个是自己定义的,用来标志请求的what, 类似handler的what一样,这里用来区分请求,这个自己定义。
  上面就是个很简单的使用nohttp实现网络请求的例子,至于其他的应用,会在后续的博客中更新。

(3) [nohttp]NoHttp 与 OKHttp 异同?以及两者的发展前景?


NoHttp 与 OKHttp 异同?以及两者的发展前景?
添加评论
查看全部 12 个回答 Yolanda
10 人赞同
其实关于NoHttp和OkHttp很多贴在都讨论过了。NoHttp的源码在这里:GitHub - Y0LANDA/NoHttp: 支持HTTP/HTTPS, 自动维持Cookie, 异步/同步请求, 大文件/多文件上传, 文件下载; 支持304缓存, 302/303重定向, 支持代理服务器.二
者的区别如下:OkHttp、HttpURLConnection、HttpClient都是Java通用的,并且它们在做Socket相关的事。而
NoHttp、Volley、AsyncHttp是在前面三者的基础上做的封装,支持异步请求,是只有Android才可以用的(如果有人非说不是,那就
要修改不少源码在别的平台才能用)。而NoHttp同时支持异步和同步,大文件、多文件上传;Cookie的自动管理,实现了和浏览器一样的标准的
Cookie协议;还有Http缓存,比如304缓存,NoHttp还提供了几种缓存模式,比如1 缓存使用缓存没缓存才请求网络,2
有网络请求网络没有网络就使用缓存,3 仅仅使用网络,4
仅仅使用缓存等等。支持队列,支持和Activity、Fragment声明周期联动取消请求,支持请求String、Bitmap、Json、
JavaBean,可自定义扩展请求类型。至于发展前景很明了了,NoHttp专门来做网络请求,不绑架开发者。NoHttp的Jar只有
130k左右,没有使用第三方依赖,纯Android原生实现。NoHttp的底层默认使用的URLConnection,但是Android4.4之后
系统不是内置了OkHttp吗?然后看源码后发现4.4以后的URLConnection使用OkHttp的接口去实现的,所以NoHttp想当然的就是
很不错的选择。OkHttp还用说吗?大牛团队square出品,值得信赖。

本文来源:https://www.shanpow.com/bg/469481/

《nohttp.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

相关阅读
  • 应届大学生个人简历下载2023三篇 应届大学生个人简历下载2023三篇
  • 大学生实习个人简历下载【三篇】 大学生实习个人简历下载【三篇】
  • 大学生实习个人简历下载2023汇编4篇 大学生实习个人简历下载2023汇编4篇
  • 在校大学生简历下载2023范文(精选4篇) 在校大学生简历下载2023范文(精选4篇)
  • 在校大学生个人简历下载2023【汇编四篇】 在校大学生个人简历下载2023【汇编四篇】
  • 2022幼儿园教师简历下载精选6篇 2022幼儿园教师简历下载精选6篇
  • pdf转word pdf转word下载 pdf转word pdf转word下载
  • 崔雪莉real电影19禁全裸床戏 崔雪莉real电影19禁全裸床戏
为您推荐
  • 小学六年级语文下册电子版人教版免费下载
    小学六年级语文下册电子版人教版免费下载
    各中小学教材编写出版单位已经提供免费电子版教材链接,你下载了吗?以下是小编整理了关于小学六年级语文下册电子版人教版免费下载,希望你喜欢。小学六年级语文下册电子版人教版免费下载: http:
  • 小学一年级语文下册电子课本人教版链接网址
    小学一年级语文下册电子课本人教版链接网址
    为了应对疫情,全国中小学都延期开学时间,而根据《关于认真做好疫情防控期间教学用书供应工作的通知》(国教材办〔2020〕2号)要求,学生可以免费下载中小学国家课程教材电子版。以下是小编整理了关于小学一年
  • 三年级小学语文下册电子课本人教版免费下载
    三年级小学语文下册电子课本人教版免费下载
    教育部要求,各地教育行政部门指导学校根据需要做好下载免费电子版教材。以下是小编整理了关于三年级小学语文下册电子课本人教版免费下载,希望你喜欢。三年级小学语文下册电子课本人教版免费下载:
  • 泽井芽衣ed2k
    泽井芽衣ed2k
    泽井芽衣,1983年8月31日出生于日本东京,AV女优。以下是blanche小编分享给大家的关于泽井芽衣ed2k、泽井芽衣种子、泽井芽衣步兵番号大全,一起来看看吧!泽井芽衣图片ed2k_泽井芽衣图片种
  • 陆军棋怎么摆放_陆军棋的游戏攻略
    陆军棋怎么摆放_陆军棋的游戏攻略
    军棋,又称陆战棋。估计作为华人没有不知道什么叫做军棋,从小最先玩棋类的就是军棋吧;下面是有陆军棋摆放方法,欢迎参阅。陆军棋摆放方法字朝下摆一种是字朝下摆的(也叫翻棋、明棋)1、军棋的棋子各方均有25个
  • 全职高手动漫全集_全职高手动漫全集链接
    全职高手动漫全集_全职高手动漫全集链接
    全职高手动漫全集已经有了,那么全职高手动漫的全集百度云资源到哪里下载呢?我们也可以找到百度云资源链接来下载全职高手动漫全集,或者百度云盘资源也可以下载全职高手动漫全集。以下就是小编为你精心整理的关于全
  • 2020手机社交软件排行榜
    2020手机社交软件排行榜
    社交软件除了大家熟知的微信,qq之外还有哪些交友软件呢?下面是有2020手机社交软件排行榜,欢迎参阅。2020手机社交软件排行榜10 手机社交软件之遇见(安卓版下载,iOS版下载)遇见(iAround
  • 2020最新里番合集大全
    2020最新里番合集大全
    2020里番预告表中有哪些好看的里番肉番动漫?在那么多类型的动漫中,H肉番是许多宅男腐女们喜欢的一类型。下面小编整理的2020里番合集大全,欢迎下载。2020里番预告表_2020年里番动漫链接_202
  • 2020年最新日本肉番动漫一览表目录
    2020年最新日本肉番动漫一览表目录
    2020最新H里番动漫有哪些呢?日本动漫最新肉番动漫可以在哪里下载观看?2020年有哪些好看的肉番动漫,肉番动漫2020目录有哪些呢?下面是小编精心为你们整理的关于2020最新肉番动漫在线观看的相关内
  • 普京硬汉霸气照片图片大全
    普京硬汉霸气照片图片大全
    普京硬汉霸气照片有的扮酷耍帅,有的卖萌搞笑,下面我们也来一起围观吧。 以下是小编分享给大家的关于最霸气普京图片下载,一起来看看普京霸气照片大全吧!最霸气普京图片下载【最霸气普京图片下载:1】【最霸气普