最近面试,一直被问道新技术新框架,这块是短板,慢慢补吧。

关于框架的学习,分几个步骤

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的更多相关文章

  1. struts2框架学习之第一天

    day01 Struts2概述 1 什么是框架 试想一下,人与人之间不同之处多,还是相同之处多呢?当然是相同之处多,不同之处少!人都有头,而且头都在脖子上面! 软件之间也是相同之处多,不同之处少,框架 ...

  2. Android 框架学习1:EventBus 3.0 的特点与如何使用

    前面总结了几篇基础,在这过程中看着别人分享自定义 View.架构或者源码分析,看起来比我写的"高大上"多了,内心也有点小波动. 但是自己的水平自己清楚,基础不扎实画再多源码流程图也 ...

  3. Android 框架学习3:从 EventBus 中学到的精华

    关联文章: EventBus 3.0 的特点与如何使用 源码分析 EventBus 3.0 如何实现事件总线 学习的目的是为了超越,经过前面对 EventBus 3.0 的学习,我们已经对它相当熟悉了 ...

  4. Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线

    Go beyond yourself rather than beyond others. 上篇文章 深入理解 EventBus 3.0 之使用篇 我们了解了 EventBus 的特性以及如何使用,这 ...

  5. Python-Django框架学习笔记——第一课:Hello World

    Python Django 有诗云: 孤山寺北贾亭西,水面初平云脚低. 几处早莺争暖树,谁家新燕啄春泥. 乱花渐欲迷人眼,浅草才能没马蹄. 最爱湖东行不足,绿杨阴里白沙堤. 今天在信阳游玩,有幸来到信 ...

  6. Android NDK学习之第一个实例---端口扫描

    为什么要写一个端口扫描的程序,Java来写不是很方便吗?因为我也没有想到什么例子能够方便的来练习.于是想到以前找到的端口扫描的C代码,于是想用他们来练习.扫描服务端端口的方式有许多种,最简单的就是直接 ...

  7. ASP.NET MVC5的一个轻量级的框架学习的第一天

    第二步第三部 这是第一天的小试成功,怪自己太笨了,一个错排查好久,还好有源码看着了解,后续还得多努力,

  8. 【Android - 框架】之OkHttp的使用

    OkHttp是一个非常优秀的网络访问框架,当下非常火的Retrofit的底层就是使用OkHttp进行封装的.接下来介绍以下OkHttp的简单使用. 1.导入依赖 在Android Studio中,在M ...

  9. 【Android - 框架】之Retrofit+RxJava的使用

    前几天分别对Retrofit和RxJava进行了总结,这个帖子打算把Retrofit结合RxJava使用的方法总结以下.有还不了解Retrofit或RxJava的朋友可以参考下面的帖子学习~ [And ...

随机推荐

  1. C算法编程题(六)串的处理

    前言 上一篇<C算法编程题(五)“E”的变换> 连续写了几篇有关图形输出的编程题,今天说下有关字符串的处理. 程序描述 在实际的开发工作中,对字符串的处理是最常见的编程任务.本题目即是要求 ...

  2. 关于多字节、宽字节、WideCharToMultiByte和MultiByteToWideChar函数的详解

    所谓的短字符,就是用8bit来表示的字符,典型的应用是ASCII码. 而宽字符,顾名思义,就是用16bit表示的字符,典型的有UNICODE. **************************** ...

  3. 原创:跳坑指南——微信小程序真机预览跟本地不同的问题

    微信小程序中出现最多的一个问题,就是真机跟本地不同:我简单列举一些我发现的原因,给大家参考,大家也可以把自己发现的东西回复给我,给我参考:本地看不到数据,就先让本地能看到数据,再看本帖.... 1:本 ...

  4. Sql Server之数据类型详解

      数据类型是一种属性,用于指定对象可保存的数据的类型,SQL Server中支持多种数据类型,包括字符类型.数值类型以及日期类型等.数据类型相当于一个容器,容器的大小决定了装的东西的多少,将数据分为 ...

  5. 在Pycharm中使用GitHub

    Pycharm是当前进行python开发,尤其是Django开发最好的IDE.GitHub是程序员的圣地,几乎人人都在用. 本文假设你对pycharm和github都有一定的了解,并且希望在pycha ...

  6. Java进击C#——项目开发环境

    本章简言 上一章我们了解一下开发环境,知道了什么去新建一个项目工程.却并没有去项目工程进行介绍.可是之后我们会常常跟项目工程打交道.所以这章笔者就对项程工程的常用的一些功能进行讲解.当然说全面那是不可 ...

  7. HTML5小游戏之见缝插针

    今天给大家带来的就是一款叫做<见缝插针>的游戏.有空你就往里插,直到你无处可插!看你能过多少关! 简洁大气 黑白搭配游戏画面非常的简洁,米白色的背景中央,放置着一个不断旋转的太阳状的球体, ...

  8. Android网络编程1

    最近在自学Android开发,从这篇开始作为我学习android开发的笔记,来记录学习过程中遇到的问题点和其解决的方法: Ui界面代码 <?xml version="1.0" ...

  9. 背水一战 Windows 10 (22) - 绑定: 通过 Binding 绑定对象, 通过 x:Bind 绑定对象, 通过 Binding 绑定集合, 通过 x:Bind 绑定集合

    [源码下载] 背水一战 Windows 10 (22) - 绑定: 通过 Binding 绑定对象, 通过 x:Bind 绑定对象, 通过 Binding 绑定集合, 通过 x:Bind 绑定集合 作 ...

  10. 【C#公共帮助类】DateTimeHelper设置电脑本地时间,实际开发很需要

    关于本文档的说明 本文档主要为了解决实际开发当中,服务器和客户端电脑时间不能相等的问题,纯干货,实际项目这种时间不同步的情况很多很多,时间不相等,到时候把本地的数据提交给服务器,服务器看实际上传时间和 ...