Okhttp的使用
来源:互联网 发布:魔豆软件 编辑:程序博客网 时间:2024/05/22 03:47
实际开发中肯定离不开网络请求数据,这时候我们可以用系统原生的,但我们更多时候用的是第三方的框架,例如Volley、Retrofit、Android-async-http,xutils,等等,当然不可能少了我们的主角Okhttp,现在我们先分析一下它们各自的特点。
1.Volley
Volley是一个简单的异步http库,仅此而已,是google推出的异步网络请求框架和图片加载框架。特别适合数据量小,通信频繁的网络操作。android绝大多数都属于这种类型,缺点是不支持同步,这点会限制开发者模式,所以不适用来上传大文件,不能post大数据。
2.Android-async-http
与Volley一样是异步网络库,使用了nio的方式实现,不过nio更适合大量链接的情况,对于移动平台有点杀鸡用牛刀的味道,volley是封装的httpURLCommit,android-async-http是封装的httpClient
,而Android平台不推荐使用HttpClientl,所以,这个库已经不适合Android平台了。
3.OkHttp
okthhp是高性能的http库,支持同步,异步,而且实现了spdy,http2,websocket协议,api很简洁易用,和Volley一样实现了http协议的缓存,Picasso就是利用okhttp的缓存机制实现其文件的缓存,实现的很优雅,很正确,okhttp和async http是一个基础的通信库,都很强大,但需要自己封装使用才更加方便,另外,okhttp已经被谷歌官方用在Android源码中了。
进入主题。使用okhttp
先添加最新的
compile 'com.squareup.okhttp3:okhttp:3.4.2'
也不要忘了添加网络权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
接下来上效果图
直接放上代码,代码里注解写的很详细
package com.gsontexe;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.Toast;import java.io.IOException;import okhttp3.Call;import okhttp3.Callback;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;public class MainActivity extends AppCompatActivity{ @Override protected void onCreate (Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //1.声明一个OkHttpClient OkHttpClient okHttpClient = new OkHttpClient(); //注:这是自己抓的一个新闻接口 String url = "http://dhapi.dahebao.cn/wemedia/getHot?userId=-1&mType=3&size=25&page=%25d&v=4.1.2&ty=a&appid=1234567890&dt=Ao583Owx-us-5xwCt4GHjfHlwldURZaok1bVnZSFAqDk&tn=-1"; //2.创建一个请求,默认情况下都是get请求 主要request是okhttp的包 Request request = new Request.Builder().url(url).build(); //3.将请求添加到OkHttpClient中,注意 Call也是okhttp的包 Call call = okHttpClient.newCall(request); //4.发起一个异步请求,Callback是回调函数 call.enqueue(new Callback(){ @Override //请求失败时回调,该方法在子线程中执行 public void onFailure (Call call, IOException e){ } //请求成功时回调,该方法在子线程中执行 @Override public void onResponse (Call call, final Response response) throws IOException{ //data就是我们拿到的数据,转换为了String类型 final String data = response.body().string(); //Toast也算更新ui,子线程不能更新ui,所有开启一个线程来更新 runOnUiThread(new Runnable(){ @Override public void run (){ Toast.makeText(MainActivity.this, data, Toast.LENGTH_SHORT).show(); } }); } }); }}
因为没有封装,所以写起来比较麻烦,封装就留着你们封装了。
接下来就到了我们的段子时间。昨天,室友丑康回来和我说他在办公室如何的机智。丑康惹怒了一个女同事,女同事骂了他一句滚蛋,丑康和别人说,海呀,我就两个蛋,滚丢了你赔呀?整个办公室都笑喷了。
- OkHttp的使用介绍
- OkHttp的简单使用
- OKHttp的简单使用
- android OkHttp的使用
- OkHttp的使用
- OkHttp的使用教程
- OkHttp的使用
- OkHttp的使用
- 高效的使用okhttp
- OkHttp的使用
- okhttp 的使用
- okhttp的第一次使用
- 关于OkHttp的使用
- okhttp的使用
- okhttp框架的使用
- OkHttp的使用
- okhttp的使用
- OKHttp的简单使用
- HBase - 正确的Put方法
- JDK中text包下的类
- spring下载地址
- centos 6 gcc升级4.7/4.8
- mysql语句优化总结(一)
- Okhttp的使用
- 无法打开文件“.lib”
- org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "CarImgUrl" (Class cn
- NodeJS中的MongoDB快速入门
- GitHub上一些比较经典的开源库-Swift版
- 学习资料链接
- Hadoop学习笔记(一)
- LeetCode 120. Triangle 题解
- swift基本控件使用