Android OkHttp

第一次听说OkHttp是工作中,组长推荐用这个替代常用的HttpUrlConnection或者HttpClient.于是乎,我就浅阅了OkHttp的介绍,才发现又是Square的作品(工作中写的App所用到的Lib几乎全部被Square承包了).

要想深入理解OkHttp,那当然是读他的原文介绍.我这只是用通俗的语言对他做简单翻译~

OkHttp的好处:

1.通过Http/2和SPDY协议,支持对于同一个Host的所有请求共享一个Socket;

SPDY是一个好东西.是由Google推出的一套协议.意在提供Http请求的效率.他是Http的一个增强,而不是替代.

这里有SPDY的Wiki英文介绍百度中文介绍.

2.如果不支持SPDY协议的话,会通过连接池的方式减少请求的延时;

3.使用Gzip减少下载包的大小;

4.会缓存Response,以避免请求重复发送.

使用:

compile ‘com.squareup.okhttp:okhttp:2.3.0‘

有了Android Studio,有了Gradle后,新添加一个Lib就如此简单.

当然,你也可以通过下载Jar导入到Project里面.

例子:

1. Get a URL

 1 package com.squareup.okhttp.guide;
 2
 3 import com.squareup.okhttp.OkHttpClient;
 4 import com.squareup.okhttp.Request;
 5 import com.squareup.okhttp.Response;
 6 import java.io.IOException;
 7
 8 public class GetExample {
 9   OkHttpClient client = new OkHttpClient();
10
11   String run(String url) throws IOException {
12     Request request = new Request.Builder()
13         .url(url)
14         .build();
15
16     Response response = client.newCall(request).execute();
17     return response.body().string();
18   }
19
20   public static void main(String[] args) throws IOException {
21     GetExample example = new GetExample();
22     String response = example.run("https://raw.github.com/square/okhttp/master/README.md");
23     System.out.println(response);
24   }
25 }

2. Post to a server

 1 package com.squareup.okhttp.guide;
 2
 3 import com.squareup.okhttp.MediaType;
 4 import com.squareup.okhttp.OkHttpClient;
 5 import com.squareup.okhttp.Request;
 6 import com.squareup.okhttp.RequestBody;
 7 import com.squareup.okhttp.Response;
 8 import java.io.IOException;
 9
10 public class PostExample {
11   public static final MediaType JSON
12       = MediaType.parse("application/json; charset=utf-8");
13
14   OkHttpClient client = new OkHttpClient();
15
16   String post(String url, String json) throws IOException {
17     RequestBody body = RequestBody.create(JSON, json);
18     Request request = new Request.Builder()
19         .url(url)
20         .post(body)
21         .build();
22     Response response = client.newCall(request).execute();
23     return response.body().string();
24   }
25
26   String bowlingJson(String player1, String player2) {
27     return "{‘winCondition‘:‘HIGH_SCORE‘,"
28         + "‘name‘:‘Bowling‘,"
29         + "‘round‘:4,"
30         + "‘lastSaved‘:1367702411696,"
31         + "‘dateStarted‘:1367702378785,"
32         + "‘players‘:["
33         + "{‘name‘:‘" + player1 + "‘,‘history‘:[10,8,6,7,8],‘color‘:-13388315,‘total‘:39},"
34         + "{‘name‘:‘" + player2 + "‘,‘history‘:[6,10,5,10,10],‘color‘:-48060,‘total‘:41}"
35         + "]}";
36   }
37
38   public static void main(String[] args) throws IOException {
39     PostExample example = new PostExample();
40     String json = example.bowlingJson("Jesse", "Jake");
41     String response = example.post("http://www.roundsapp.com/post", json);
42     System.out.println(response);
43   }
44 }
时间: 2024-10-15 03:01:09

Android OkHttp的相关文章

Android OkHttp完全解析 是时候来了解OkHttp了

Android OkHttp完全解析 是时候来了解OkHttp了

Android OkHttp与物理存储介质缓存:DiskLruCache(2)

 Android OkHttp与物理存储介质缓存:DiskLruCache(2) 本文在附录文章8,9的基础之上,把Android OkHttp与DiskLruCache相结合,综合此两项技术,实现基于OkHttp的物理存储介质缓存DiskLruCache. 用一个完整的例子加以说明.该例子的代码要实现这样的过程:代码启动后,要往一个ImageView里面加载一张网络图片,首先检查DiskLruCache是否已经存在该图片的缓存,如果存在,则直接复用缓存,如果不存在则使用OkHttp把图片异

(转)Android OkHttp完全解析 是时候来了解OkHttp了

转载自: Android OkHttp完全解析 是时候来了解OkHttp了 一.概述 最近在群里听到各种讨论okhttp的话题,可见okhttp的口碑相当好了.再加上Google貌似在6.0版本里面删除了HttpClient相关API,对于这个行为不做评价.为了更好的在应对网络访问,学习下okhttp还是蛮必要的,本篇博客首先介绍okhttp的简单使用,主要包含: 一般的get请求一般的post请求基于Http的文件上传文件下载加载图片支持请求回调,直接返回对象.对象集合支持session的保持

Android OkHttp 讲解

首先介绍okhttp的简单使用: 一般的get请求 一般的post请求 基于Http的文件上传 文件下载 加载图片 支持请求回调,直接返回对象.对象集合 支持session的保持 于Android Studio可以选择添加依赖 compile 'com.squareup.okhttp:okhttp:2.4.0' compile 'com.squareup.okio:okio:1.5.0' (一)Http Get //创建okHttpClient对象 OkHttpClient mOkHttpCli

Android OkHttp详解

来源 http://frodoking.github.io/2015/03/12/android-okhttp/ 编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! Android为我们提供了两种HTTP交互的方式:HttpURLConnection 和 Apache HTTP Client,虽然两者都支持HTTPS,流的上传和下载,配置超时,IPv6和连接

Android OkHttp文件上传与下载的进度监听扩展

相信大家对OkHttp也是相当的熟悉了,毕竟是Square的东西,对于其种种优点,这里也不再叙说.优秀是优秀,但是毕竟优秀的东西给我们封装了太多,那么问题来了,我们使用OkHttp作为我们的网络层,简单地进行GET/POST请求是毫无问题.近日看了产品的设计稿,毛估估会有文件的上传与下载的需求,如果使用OkHttp作为网络层进行封装,你会惊讶的发现,简直封装的太"完美"了.如果现在有这么一个需求,要求对文件进行上传或下载,但是在上传或者下载前,你需要给用户一个友好的提示,在上传或者下载

[转] Android OkHttp完全解析 是时候来了解OkHttp了

http://blog.csdn.net/lmj623565791/article/details/47911083: 本文出自:[张鸿洋的博客] 一.概述 最近在群里听到各种讨论okhttp的话题,可见okhttp的口碑相当好了.再加上Google貌似在6.0版本里面删除了HttpClient相关API,对于这个行为不做评价.为了更好的在应对网络访问,学习下okhttp还是蛮必要的,本篇博客首先介绍okhttp的简单使用,主要包含: 一般的get请求 一般的post请求 基于Http的文件上传

Android OkHttp使用与分析

安卓开发领域,很多重要的问题都有了很好的开源解决方案,例如网络请求 OkHttp + Retrofit 简直就是不二之选."我们不重复造轮子不表示我们不需要知道轮子该怎么造及如何更好的造!",在用了这些好轮子将近两年之后,现在是时候拆开轮子一探究竟了.本文基于 OkHttp 截至 2016.7.11 的最新源码对其进行了详细分析. 1,整体思路 从使用方法出发,首先是怎么使用,其次是我们使用的功能在内部是如何实现的,实现方案上有什么技巧,有什么范式.全文基本上是对 OkHttp 源码的

Android OkHttp 文件上传和下载

相信大家对OkHttp也是相当的熟悉了,毕竟是Square的东西,对于其种种优点,这里也不再叙说.优秀是优秀,但是毕竟优秀的东西给我们封装了太多,那么问题来了,我们使用OkHttp作为我们的网络层,简单地进行GET/POST请求是毫无问题.近日看了产品的设计稿,毛估估会有文件的上传与下载的需求,如果使用OkHttp作为网络层进行封装,你会惊讶的发现,简直封装的太"完美"了.如果现在有这么一个需求,要求对文件进行上传或下载,但是在上传或者下载前,你需要给用户一个友好的提示,在上传或者下载