OkHttp –Android、Java应用中的 HTTP SPDY 客户端库
原文链接: 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 客户端库相关推荐
- Android Java代码中获取App渠道信息
项目中需要在Java中获取App打包的渠道信息,而打包渠道相关的内容一般都设置在 build.gradle 的 productFlavors{} 中. 以下是介绍一种方便的实现方法,通过manifes ...
- android java split_Java中的split函数的用法
Java中的 split 函数是用于按指定字符(串)或正则去分割某个字符串,结果以字符串数组形式返回: 例如: String str="1234@abc"; String[] a ...
- Android Java开发中一些唬人的常用关键字用法,持续更新中。。。
一,return语句 最常用的是返回方法指定类型的值(这个值总是确定的), 另一种用的相对较少的用法是结束方法的执行(仅仅一个return语句). 二.布局中容易忽视的属性方法 ①setClipChi ...
- android java join_java中的join用法
t1.join(); 在谁里面调用就把谁阻塞 join()方法的作用,是等待这个线程结束: 也就是说,t.join()方法 阻塞调用此方法的线程(calling thread)进入 TIMED_WAI ...
- Java程序中Socket(关于客户端和服务端实例)
例如:客户端将d:\1.jpg图片文件上传给服务端,服务端收到后保存到d:\java\a.jpg,服务器端接收完成后,发送"上传成功"回应客户端. 一:客户端实现 package ...
- Android之项目中调用已有.so库
注意该.so库指的是android平台的,非一般linux.unix平台: 1.现有库libcom_ycan_testLib.so 2.新建android项目TestLib2 3.添加新类: 类名:t ...
- java服务器与客户端项目,Java项目中用于服务器和客户端软件包的共...
I use eclipse and have put everything in a single java project, each section server,client and libra ...
- webservice概述及cxf在Java开发中应用(三) cxf客户端开发
cxf客户端的开发非常的简单,它本身提供了客户端生成工具,我们可以轻松地生成客户端进行调用. 首先我们找到下载cxf包bin目录,在这里有一个批处理命令,wsdl2Java,通过这个命令可以生成cxf ...
- Android/Java汉字转拼音类及按A-Z排序方法
在Android / java 开发中有时需要对数据进行根据拼音[A-Z]的规则进行排序所以需要先将汉字转为拼音然后再进行排序 //汉字转拼音类 package xyz.sort; import ja ...
最新文章
- 安卓虚拟机启动后报错: 类似 SDK Manager] Error: Error parsing .....devices.xml 解决方案
- 1.13 抽象类和接口的区别
- 302状态码_http状态码是什么?301 302 404的SEO应用场景
- Java 跨平台运行机理:Dos 命令在桌面新建文件夹,并在其中编译、运行一段 Java 程序
- python支持复数类型以下什么说法是错误的,【Python】专项练习题(1)
- linux 查看hdfs文件,Hadoop之HDFS文件操作
- 常用Keytool 命令
- 13款用于Web的流行HTML5视频播放器
- 扫描枪速度测试软件,条码扫描枪怎么测试
- linux查看执行过哪些命令,linux查看执行过的所有命令
- R语言 REmap安装以及城市信息获取失败问题
- PDPS汉化包安装与语言界面切换操作
- 2022低压电工考题及答案
- 互联网营销师-淘宝直播运营
- python中的pickle是什么意思_python中pickle模块浅析
- mysql以blob存储图片文件的存储和读取问题解决
- ajax请求后台传body格式数据,服务器@RequestBody需要注意实相符
- 基于ping的过程学习二、三层转发之三(ARP表、FDB表、路由表详解)
- itop4412 设备树 HDMI
- MFC工具箱各种控件的具体意义
热门文章
- java中判断string类型的值_java判断对象是否是string类型
- 服务台建设系列之:IT服务组织中IT服务台的常见要求及话术
- Android开发 - 收藏集
- python实现求1!+...+10!之和
- html图片动画怎么掉头,人行道上不能掉头?正确掉头步骤须牢记
- C#实现AES算法对文件的加密解密
- python去掉一个最高分和最低分求平均数_JS中去掉最高分和最低分后求平均数
- switch case语法
- linux nginx css,nginx配置合并js和css文件请求
- 思科Catalyst 9K