Android网络请求框架剖析一、Okhttp
2016-06-27 12:47
417 查看
有些砖友说最喜欢看你写的东西了,三言两语使用方法很明了。但是其实不求甚解有时候也不是好事。我有个习惯就是刷球鞋的时候就用卫生纸包起来,我不明白为什么这么做,但是看到别人这么做,我尝试的理解了下就这么做了,我认为用卫生纸包裹球鞋是因为可以加速风干。当我搞得乐此不彼的时候,有人告诉我刷球鞋的时候包卫生纸是因为之前球鞋都是白色的见了风和太阳容易泛黄。。。瞬间我的世界观崩塌了。写代码也是这样,如果不求甚解,很容易出现“刷球鞋”的问题。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Okhttp是大家广泛运用的一个框架,说明之前首先推荐鸿洋的封装https://github.com/hongyangAndroid/okhttp-utils
封装后的使用方式请直接跳转上述链接。
首先引入
AS两种引入方法说了很多遍了其实效果一样
在gradle里dependencies添加
compile ‘com.squareup.okhttp:okhttp:2.4.0’
compile ‘com.squareup.okio:okio:1.5.0’
然后sync或者rebuild一下
然后使用
Get
获取一个网页的内容。
//创建okHttpClient对象
OkHttpClient mOkHttpClient = new OkHttpClient();
//创建一个Request ,Request.Builder设置更多的参数比如:header、method等。
final Request request = new Request.Builder()
.url(“要加载的网址”)
.build();
//new call 用request构造
Call call = mOkHttpClient.newCall(request);
//由于要异步 请求加入调度 加入enqueue队列 然后在Callback里得到结果
call.enqueue(new Callback()
{
@Override
public void onFailure(Request request, IOException e)
{
}
由于onResponse执行的线程不是UI线程,操作控件的话要用handler
@Override
public void onResponse(final Response response) throws IOException
{
final String res = response.body().string();
runOnUiThread(new Runnable()
{
@Override
public void run()
{
mTv.setText(res);
}
}
Post
Request request = buildMultipartFormRequest(
url, new File[]{file}, new String[]{fileKey}, null);
//post参数包在请求体内
//添加多个String键值对构造RequestBody
FormEncodingBuilder builder = new FormEncodingBuilder();
builder.add(“username”,”okhttp”);
builder.add(“userid”,”1”)
Request request = new Request.Builder()
.url(url)
.post(builder.build())
.build();
mOkHttpClient.newCall(request).enqueue(new Callback(){});
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Okhttp是大家广泛运用的一个框架,说明之前首先推荐鸿洋的封装https://github.com/hongyangAndroid/okhttp-utils
封装后的使用方式请直接跳转上述链接。
首先引入
AS两种引入方法说了很多遍了其实效果一样
在gradle里dependencies添加
compile ‘com.squareup.okhttp:okhttp:2.4.0’
compile ‘com.squareup.okio:okio:1.5.0’
然后sync或者rebuild一下
然后使用
Get
获取一个网页的内容。
//创建okHttpClient对象
OkHttpClient mOkHttpClient = new OkHttpClient();
//创建一个Request ,Request.Builder设置更多的参数比如:header、method等。
final Request request = new Request.Builder()
.url(“要加载的网址”)
.build();
//new call 用request构造
Call call = mOkHttpClient.newCall(request);
//由于要异步 请求加入调度 加入enqueue队列 然后在Callback里得到结果
call.enqueue(new Callback()
{
@Override
public void onFailure(Request request, IOException e)
{
}
@Override public void onResponse(final Response response) throws IOException { //String htmlStr = response.body().string();拿到返回的字符串 //response.body().bytes();拿到返回的二进制字节数组 //esponse.body().byteStream();拿到返回的inputStream } });
由于onResponse执行的线程不是UI线程,操作控件的话要用handler
@Override
public void onResponse(final Response response) throws IOException
{
final String res = response.body().string();
runOnUiThread(new Runnable()
{
@Override
public void run()
{
mTv.setText(res);
}
});
}
Post
Request request = buildMultipartFormRequest(
url, new File[]{file}, new String[]{fileKey}, null);
//post参数包在请求体内
//添加多个String键值对构造RequestBody
FormEncodingBuilder builder = new FormEncodingBuilder();
builder.add(“username”,”okhttp”);
builder.add(“userid”,”1”)
Request request = new Request.Builder()
.url(url)
.post(builder.build())
.build();
mOkHttpClient.newCall(request).enqueue(new Callback(){});
相关文章推荐
- 我最喜欢的网络小说
- http长连接和短连接
- android async-http使用
- Python Http发送模块实现
- https原理及tomcat配置https
- linux网络命令之top、htop
- HTTP协议详解
- 使用PHP Socket 编程模拟Http post和get请求
- Retrofit+OKHttp实现缓存以及遇到的问题
- 计算机网络基础知识笔记(一)
- Nginx 1.10.1 编译、配置文档(支持http_v2,TLSv1.2,openssl v1.0.2)
- Http请求数据GZIP压缩
- java发送http的get、post请求 登录返JSON
- SpringMVC 中HttpMessageConverter简介和Http请求415 Unsupported Media Type的问题
- 各类 HTTP 返回状态代码详解
- iOS 使用Https访问网络(一)
- java 写http压测
- 大端法、小端法、网络字节序
- 浅谈HTTP中Get与Post的区别
- laravel HTTP路由实例教程(三)—— CSRF攻击原理及其防护