Android 框架学习之 第一天 okhttp & Retrofit
最近面试,一直被问道新技术新框架,这块是短板,慢慢补吧。
关于框架的学习,分几个步骤
I.框架的使用
II.框架主流使用的版本和Android对应的版本
III.框架的衍生使用比如okhttp就会有Retrofit的使用
IV.框架历史版本,已经每个版本解决的问题
V.框架源码的分析
VI.框架设计思想,优缺点,如何解决。
第一天(20160919):
计划:
okhttp 的使用
okhttp 的主流版本和对应android版本
okhttp对应的retrofit的框架使用。
okhttp:
GitHub地址:
https://github.com/square/okhttp
I.OKHttp的使用。
下面是OKhttp的使用过程。
public class OkhttpRequestManagerImpl extends NetworkRequestBaseManager {
OkHttpClient client = null;
CallBackListener callBackListener = null;
@Override
public void initManager(NetWorkResponse response) {
super.initManager(response);
client = new OkHttpClient();
callBackListener = new CallBackListener();
}
@Override
public void release() {
super.release();
callBackListener = null;
client = null;
}
@Override
public void requestHttp(int method, String hostUrl, String methodUrl) {
String url = hostUrl+methodUrl;
final Request request = new okhttp3.Request.Builder().url(url)
.addHeader("Accept", "application/json")
.build();
Call call = client.newCall(request);
call.enqueue(callBackListener);
}
class CallBackListener implements okhttp3.Callback{
@Override
public void onFailure(Call call, IOException e) {
deliverFailure(e.getMessage());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
deliverSuccess(response.body().string());
}
}
}
一个简单的使用过程如上代码。
post请求:
@Override
public void requestHttp(int method, String hostUrl, String methodUrl, Map<String,String> map) {
switch(method)
{
case METHOD_GET:
requestGet(hostUrl, methodUrl);
break;
case METHOD_POST:
requestPost(hostUrl,methodUrl,map);
break;
} } private void requestPost(String hostUrl, String methodUrl, Map<String, String> map) {
try {
String url = hostUrl + methodUrl;
StringBuilder tempParams = new StringBuilder();
int pos = 0;
for (String key : map.keySet()) {
if (pos > 0) {
tempParams.append("&");
}
tempParams.append(String.format("%s=%s", key, URLEncoder.encode(map.get(key), "utf-8")));
pos++;
}
String params = tempParams.toString();
RequestBody body = RequestBody.create(MEDIA_TYPE_JSON, params);
final Request request = new Request.Builder().url(url)
.post(body)
.build();
Call call = client.newCall(request);
call.enqueue(callBackListener);
}catch (Exception e)
{
deliverFailure(e.getMessage());
}
} private void requestGet(String hostUrl, String methodUrl) {
String url = hostUrl+methodUrl;
final Request request = new Request.Builder().url(url)
.addHeader("Accept", "application/json")
.get()
.build();
Call call = client.newCall(request);
call.enqueue(callBackListener);
}
II.OKHttp 功能
Android 框架学习之 第一天 okhttp & Retrofit的更多相关文章
- struts2框架学习之第一天
day01 Struts2概述 1 什么是框架 试想一下,人与人之间不同之处多,还是相同之处多呢?当然是相同之处多,不同之处少!人都有头,而且头都在脖子上面! 软件之间也是相同之处多,不同之处少,框架 ...
- Android 框架学习1:EventBus 3.0 的特点与如何使用
前面总结了几篇基础,在这过程中看着别人分享自定义 View.架构或者源码分析,看起来比我写的"高大上"多了,内心也有点小波动. 但是自己的水平自己清楚,基础不扎实画再多源码流程图也 ...
- Android 框架学习3:从 EventBus 中学到的精华
关联文章: EventBus 3.0 的特点与如何使用 源码分析 EventBus 3.0 如何实现事件总线 学习的目的是为了超越,经过前面对 EventBus 3.0 的学习,我们已经对它相当熟悉了 ...
- Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线
Go beyond yourself rather than beyond others. 上篇文章 深入理解 EventBus 3.0 之使用篇 我们了解了 EventBus 的特性以及如何使用,这 ...
- Python-Django框架学习笔记——第一课:Hello World
Python Django 有诗云: 孤山寺北贾亭西,水面初平云脚低. 几处早莺争暖树,谁家新燕啄春泥. 乱花渐欲迷人眼,浅草才能没马蹄. 最爱湖东行不足,绿杨阴里白沙堤. 今天在信阳游玩,有幸来到信 ...
- Android NDK学习之第一个实例---端口扫描
为什么要写一个端口扫描的程序,Java来写不是很方便吗?因为我也没有想到什么例子能够方便的来练习.于是想到以前找到的端口扫描的C代码,于是想用他们来练习.扫描服务端端口的方式有许多种,最简单的就是直接 ...
- ASP.NET MVC5的一个轻量级的框架学习的第一天
第二步第三部 这是第一天的小试成功,怪自己太笨了,一个错排查好久,还好有源码看着了解,后续还得多努力,
- 【Android - 框架】之OkHttp的使用
OkHttp是一个非常优秀的网络访问框架,当下非常火的Retrofit的底层就是使用OkHttp进行封装的.接下来介绍以下OkHttp的简单使用. 1.导入依赖 在Android Studio中,在M ...
- 【Android - 框架】之Retrofit+RxJava的使用
前几天分别对Retrofit和RxJava进行了总结,这个帖子打算把Retrofit结合RxJava使用的方法总结以下.有还不了解Retrofit或RxJava的朋友可以参考下面的帖子学习~ [And ...
随机推荐
- karma单元测试入门
学习angularjs,都会遇到karma单元测试,可是初学者面对复杂的测试配置往往不知从何入手,下面我们将抛开angularjs,单独使用两个js文件,完成一次测试入门. 0,karma原理
- IOS中block和代理
从ios4开始引入block,就是代码块,结构类c语言 基本结构 返回值 (^block名称)(参数):int(^BlockName)(int):返回值为int型,参数是一个int值的叫BlockNa ...
- 附录B 安装MySql数据库
B.1 卸载旧的MaySql程序 第一步 查找以前是否安装有mysql 使用命令查看是否已经安装过mysql: #rpm -qa | grep -i mysql 如果没有结果,则可以进行mysq ...
- XCode日常使用备忘录
0. Introduction XCode是macOS上开发app不可缺少的开发者工具,不管是开发macOS上的应用,还是iOS上的应用,都离不开XCode环境.尽管其易用性广受诟病,但由于苹果app ...
- 1.Java基础之System对象
毕向东老师Java基础学习笔记——System对象 今天学习Java中的System对象后,感觉这个对象对我们主要有以下几点用处. 1.获取当前操作系统版本和类型. 2.获取当前操作系统的path中的 ...
- CSS3 media queries + jQuery实现响应式导航
目的: 实现一个响应式导航,当屏幕宽度大于700px时,效果如下: 当屏幕宽度小于700px时,导航变成一个小按钮,点击之后有一个菜单慢慢拉下来: 思路: 1.为了之后在菜单上绑定事件,并且不向DOM ...
- SQL Server 2016里的sys.dm_exec_input_buffer
在你的DBA职业里,你们谁有用过DBCC INPUTBUFFER命令,来获得已经提交到SQL Server特定会话的最后SQL语句?请举手!大家都用过! 我们都知道DBCC命令有点尴尬,因为你不能在T ...
- WCF学习系列三--【WCF Interview Questions – Part 3 翻译系列】
http://www.topwcftutorials.net/2012/10/wcf-faqs-part3.html WCF Interview Questions – Part 3 This WCF ...
- 关系数据库SQL之基本数据查询:子查询、分组查询、模糊查询
前言 上一篇关系数据库常用SQL语句语法大全主要是关系型数据库大体结构,本文细说一下关系型数据库查询的SQL语法. 语法回顾 SELECT [ALL|DISTINCT] <目标列表达式>[ ...
- hotcss用法
1.0 GitHub下载地址: https://github.com/imochen/hotcss 或者我的百度网盘:http://pan.baidu.com/s/1pKlLqHX 使用方法看demo ...