集成和代码:

compile 'com.squareup.okhttp3:okhttp:3.4.1'

//默认是get请求

public class HttpUtil {public static void sendOkHttpRequest(String address, okhttp3.Callback callback) {OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url(address).build();client.newCall(request).enqueue(callback);}}
    /*** 根据天气id请求城市天气信息。*/public void requestWeather(final String weatherId) {String weatherUrl = "https://api.heweather.com/x3/weather?cityid=" + weatherId + "&key=bc0418b57b2d4918819d3974ac1285d9";HttpUtil.sendOkHttpRequest(weatherUrl, new Callback() {@Overridepublic void onResponse(Call call, Response response) throws IOException {final String responseText = response.body().string();final Weather weather = Utility.handleWeatherResponse(responseText);runOnUiThread(new Runnable() {@Overridepublic void run() {if (weather != null && "ok".equals(weather.status)) {SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(WeatherActivity.this).edit();editor.putString("weather", responseText);editor.apply();showWeatherInfo(weather);} else {Toast.makeText(WeatherActivity.this, "获取天气信息失败", Toast.LENGTH_SHORT).show();}swipeRefresh.setRefreshing(false);}});}@Overridepublic void onFailure(Call call, IOException e) {e.printStackTrace();runOnUiThread(new Runnable() {@Overridepublic void run() {Toast.makeText(WeatherActivity.this, "获取天气信息失败", Toast.LENGTH_SHORT).show();swipeRefresh.setRefreshing(false);}});}});loadBingPic();}/*** 加载必应每日一图*/private void loadBingPic() {String requestBingPic = "http://guolin.tech/api/bing_pic";HttpUtil.sendOkHttpRequest(requestBingPic, new Callback() {@Overridepublic void onResponse(Call call, Response response) throws IOException {final String bingPic = response.body().string();SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(WeatherActivity.this).edit();editor.putString("bing_pic", bingPic);editor.apply();runOnUiThread(new Runnable() {@Overridepublic void run() {Glide.with(WeatherActivity.this).load(bingPic).into(bingPicImg);}});}@Overridepublic void onFailure(Call call, IOException e) {e.printStackTrace();}});}

runOnUiThread(即保证在ui线程中更新数据):
把更新ui的代码创建在Runnable中,然后在需要更新ui时,把这个Runnable对象传给runOnUiThread(Runnable)。 这样Runnable对像就能在ui线程中被调用。如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI线程。

参考文章

http://blog.csdn.net/itachi85/article/details/51190687

http://blog.csdn.net/jdfkldjlkjdl/article/details/73824677

http://blog.csdn.net/donkor_/article/details/53589316

okhttp框架学习相关推荐

  1. Android开发神器:OkHttp框架源码解析

    前言 HTTP是我们交换数据和媒体流的现代应用网络,有效利用HTTP可以使我们节省带宽和更快地加载数据,Square公司开源的OkHttp网络请求是有效率的HTTP客户端.之前的知识面仅限于框架API ...

  2. OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据...

    OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据 我们这片博文就来聊聊这个反响很不错的OkHttp了,标题是我恶搞的,本篇将着重详细的 ...

  3. OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据

    OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据 我们这片博文就来聊聊这个反响很不错的OkHttp了,标题是我恶搞的,本篇将着重详细的 ...

  4. Android八门神器(一):OkHttp框架源码解析

    HTTP是我们交换数据和媒体流的现代应用网络,有效利用HTTP可以使我们节省带宽和更快地加载数据,Square公司开源的OkHttp网络请求是有效率的HTTP客户端.之前的知识面仅限于框架API的调用 ...

  5. Android八门神器(一): OkHttp框架源码解析

    HTTP是我们交换数据和媒体流的现代应用网络,有效利用HTTP可以使我们节省带宽和更快地加载数据,Square公司开源的OkHttp网络请求是有效率的HTTP客户端.之前的知识面仅限于框架API的调用 ...

  6. Android八门神器(一):OkHttp框架源码解析 1

    HTTP是我们交换数据和媒体流的现代应用网络,有效利用HTTP可以使我们节省带宽和更快地加载数据,Square公司开源的OkHttp网络请求是有效率的HTTP客户端.之前的知识面仅限于框架API的调用 ...

  7. Android 框架学习4:一次读懂热门图片框架 Picasso 源码及流程

    Android 框架学习1:EventBus 3.0 的特点与如何使用 Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线 Android 框架学习3:我从 EventB ...

  8. jQuery框架学习第二天:jQuery中万能的选择器

    jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQu ...

  9. ssm框架requestmapping找不到_框架学习,就是介么简单

    框架学习 程序员凯小白 最近实训ssm框架,SSM框架,是Spring + Spring MVC + MyBatis的缩写,这个是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大 ...

最新文章

  1. [分享]Windows Phone 7 For Dummies
  2. CSS Hack 汇总快查
  3. Java学习笔记—TCP通信
  4. 1071svm函数 r语言_R语言机器学习之核心包e1071 - 数据分析
  5. 一个C++程序员生产力,大概相当20个C程序员,200个java程序员?
  6. android.net.wifi的简单使用方法
  7. zookeeper使用及模拟注册中心原理
  8. C++_类和对象_C++多态_纯虚函数和抽象类---C++语言工作笔记072
  9. java 保存 设置_如何在菜单中保存设置
  10. python-socket模块介绍
  11. 数字图像处理 冈萨雷斯 第三版 书中配套图片下载地址
  12. 小红书关键词搜索商品API接口(商品列表数据接口)
  13. 1024网易程序员节,最上头的爱,给最好的你!
  14. CSDN20181217博客黑板报
  15. 域名解析怎么设置?域名解析cname是什么意思?
  16. window升级,U盘重装系统
  17. echarts中国地图显示,涟漪效果vue版本
  18. android安全分析师,乐固分析-Android安全-看雪论坛-安全社区|安全招聘|bbs.pediy.com...
  19. 虚拟化服务器查看密码策略,VMWare虚拟化管理员平台管理手册.docx
  20. 计算机画图师和制图员有什么区别,室内CAD施工图培训告诉你技术员与绘图师的差别在哪里...

热门文章

  1. android 自定义组合键,自定义快捷操作 安卓虚拟Home键设置技巧
  2. mysql engine 和type_type=INNODB和engine=INNODB的区别
  3. ECS中的Entity实体
  4. python3读取linux文件,Python3读取文件小技巧
  5. 以CSS方式提高您网站的速度
  6. 使用DocFx生成文档网站并将其发布到GitHub Pages
  7. ping不通自己的ip地址_1000个IP地址同时怎么Ping,一个小技巧轻松搞定
  8. java 泛型参数_[基础]-Java泛型
  9. typora绑定github博客_零基础搭建个人博客
  10. android 隐藏所有 fragment,Android 隐藏Fragment