原文链接: http://blog.chengyunfeng.com/?p=489

我们通过HTTP在设备和服务器之前交换数据。高效的使用HTTP可以让您的应用运行更快、更节省流量。而OkHttp库就是为此而生

OkHttp是一个高效的HTTP库:

  • 支持 SPDY ,共享同一个Socket来处理同一个服务器的所有请求
  • 如果SPDY不可用,则通过连接池来减少请求延时
  • 无缝的支持GZIP来减少数据流量
  • 缓存响应数据来减少重复的网络请求

OkHttp 处理了很多网络疑难杂症:会从很多常用的连接问题中自动恢复。如果您的服务器配置了多个IP地址,当第一个IP连接失败的时候,OkHttp会自动尝试下一个IP。OkHttp还处理了代理服务器问题和SSL握手失败问题。

使用 OkHttp 无需重写您程序中的网络代码。OkHttp实现了几乎和java.net.HttpURLConnection一样的API。如果您用了 Apache HttpClient,则OkHttp也提供了一个对应的okhttp-apache 模块。

OkHttp 支持 Android 2.2+;Java 1.5+。

示例

通过GET请求一个URL

下面的示例请求一个URL并答应出返回内容字符。 猛击我查看全部代码

    OkHttpClient client = new OkHttpClient();String get(URL url) throws IOException {HttpURLConnection connection = client.open(url);InputStream in = null;try {// Read the response.in = connection.getInputStream();byte[] response = readFully(in);return new String(response, "UTF-8");} finally {if (in != null) in.close();}}

POST 数据到服务器

下面的代码通过Post发送数据到服务器 猛击我查看全部代码

    OkHttpClient client = new OkHttpClient();String post(URL url, byte[] body) throws IOException {HttpURLConnection connection = client.open(url);OutputStream out = null;InputStream in = null;try {// Write the request.connection.setRequestMethod("POST");out = connection.getOutputStream();out.write(body);out.close();// Read the response.if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {throw new IOException("Unexpected HTTP response: "+ connection.getResponseCode() + " " + connection.getResponseMessage());}in = connection.getInputStream();return readFirstLine(in);} finally {// Clean up.if (out != null) out.close();if (in != null) in.close();}}

项目主页: OkHttp

OkHttp –Android、Java应用中的 HTTP SPDY 客户端库相关推荐

  1. Android Java代码中获取App渠道信息

    项目中需要在Java中获取App打包的渠道信息,而打包渠道相关的内容一般都设置在 build.gradle 的 productFlavors{} 中. 以下是介绍一种方便的实现方法,通过manifes ...

  2. android java split_Java中的split函数的用法

    Java中的 split  函数是用于按指定字符(串)或正则去分割某个字符串,结果以字符串数组形式返回: 例如: String str="1234@abc"; String[] a ...

  3. Android Java开发中一些唬人的常用关键字用法,持续更新中。。。

    一,return语句 最常用的是返回方法指定类型的值(这个值总是确定的), 另一种用的相对较少的用法是结束方法的执行(仅仅一个return语句). 二.布局中容易忽视的属性方法 ①setClipChi ...

  4. android java join_java中的join用法

    t1.join(); 在谁里面调用就把谁阻塞 join()方法的作用,是等待这个线程结束: 也就是说,t.join()方法 阻塞调用此方法的线程(calling thread)进入 TIMED_WAI ...

  5. Java程序中Socket(关于客户端和服务端实例)

    例如:客户端将d:\1.jpg图片文件上传给服务端,服务端收到后保存到d:\java\a.jpg,服务器端接收完成后,发送"上传成功"回应客户端. 一:客户端实现 package ...

  6. Android之项目中调用已有.so库

    注意该.so库指的是android平台的,非一般linux.unix平台: 1.现有库libcom_ycan_testLib.so 2.新建android项目TestLib2 3.添加新类: 类名:t ...

  7. java服务器与客户端项目,Java项目中用于服务器和客户端软件包的共...

    I use eclipse and have put everything in a single java project, each section server,client and libra ...

  8. webservice概述及cxf在Java开发中应用(三) cxf客户端开发

    cxf客户端的开发非常的简单,它本身提供了客户端生成工具,我们可以轻松地生成客户端进行调用. 首先我们找到下载cxf包bin目录,在这里有一个批处理命令,wsdl2Java,通过这个命令可以生成cxf ...

  9. Android/Java汉字转拼音类及按A-Z排序方法

    在Android / java 开发中有时需要对数据进行根据拼音[A-Z]的规则进行排序所以需要先将汉字转为拼音然后再进行排序 //汉字转拼音类 package xyz.sort; import ja ...

最新文章

  1. 安卓虚拟机启动后报错: 类似 SDK Manager] Error: Error parsing .....devices.xml 解决方案
  2. 1.13 抽象类和接口的区别
  3. 302状态码_http状态码是什么?301 302 404的SEO应用场景
  4. Java 跨平台运行机理:Dos 命令在桌面新建文件夹,并在其中编译、运行一段 Java 程序
  5. python支持复数类型以下什么说法是错误的,【Python】专项练习题(1)
  6. linux 查看hdfs文件,Hadoop之HDFS文件操作
  7. 常用Keytool 命令
  8. 13款用于Web的流行HTML5视频播放器
  9. 扫描枪速度测试软件,条码扫描枪怎么测试
  10. linux查看执行过哪些命令,linux查看执行过的所有命令
  11. R语言 REmap安装以及城市信息获取失败问题
  12. PDPS汉化包安装与语言界面切换操作
  13. 2022低压电工考题及答案
  14. 互联网营销师-淘宝直播运营
  15. python中的pickle是什么意思_python中pickle模块浅析
  16. mysql以blob存储图片文件的存储和读取问题解决
  17. ajax请求后台传body格式数据,服务器@RequestBody需要注意实相符
  18. 基于ping的过程学习二、三层转发之三(ARP表、FDB表、路由表详解)
  19. itop4412 设备树 HDMI
  20. MFC工具箱各种控件的具体意义

热门文章

  1. java中判断string类型的值_java判断对象是否是string类型
  2. 服务台建设系列之:IT服务组织中IT服务台的常见要求及话术
  3. Android开发 - 收藏集
  4. python实现求1!+...+10!之和
  5. html图片动画怎么掉头,人行道上不能掉头?正确掉头步骤须牢记
  6. C#实现AES算法对文件的加密解密
  7. python去掉一个最高分和最低分求平均数_JS中去掉最高分和最低分后求平均数
  8. switch case语法
  9. linux nginx css,nginx配置合并js和css文件请求
  10. 思科Catalyst 9K