OKHttp简单使用

官网:http://square.github.io/okhttp/

参考地址:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0106/2275.html

封装:http://blog.csdn.net/lmj623565791/article/details/47911083

Http Get 同步方式

This program downloads a URL and print its contents as a string.

URL访问,放回结果以String形式显示。

OkHttpClient client = new OkHttpClient();

String run(String url) throws IOException {
  Request request = new Request.Builder()
      .url(url)
      .build();

  Response response = client.newCall(request).execute();
  return response.body().string();
}

Http POST 同步方式

This program posts data to a service. 

提交数据到服务器,放回结果以String形式显示,以下例子没有数据提交。

public static final MediaType JSON
    = MediaType.parse("application/json; charset=utf-8");

OkHttpClient client = new OkHttpClient();

String post(String url, String json) throws IOException {
  RequestBody body = RequestBody.create(JSON, json);
  Request request = new Request.Builder()
      .url(url)
      .post(body)
      .build();
  Response response = client.newCall(request).execute();
  return response.body().string();
}

返回结果:

1.以String形式,默认以UTF-8形式解析

public final String string() throws IOException
Returns the response as a string decoded with the charset of the Content-Type header. If that header is either absent or lacks a charset,
this will attempt to decode the response body as UTF-8.Throws:
IOException

2.以流的形式

public final InputStream byteStream()

Http POST 同步方式

提交数据到服务器,放回结果以String形式显示,以下例子有数据提交。

OkHttpClient client = new OkHttpClient();
String post(String url, String json) throws IOException {

     RequestBody formBody = new FormEncodingBuilder()
                               .add("platform", "android")
                               .add("name", "bug")
                               .add("subject", "XXXXXXXXXXXXXXX")
                               .build();

      Request request = new Request.Builder()
                           .url(url)
                           .post(body)
                           .build();

      Response response = client.newCall(request).execute();
    if (response.isSuccessful()) {
        return response.body().string();
    } else {
        throw new IOException("Unexpected code " + response);
    }
}

使用步骤:

第一步:创建OkHttpClient

第二步:创建Request

第三步:发送请求,等待返回结果:Response response = client.newCall(request).execute();

Andoird不推荐用同步方式去请求数据,Android本身不允许,要么就用要另开线程。用框架的异步方式去请求。

注意:

  • OkHttp官方文档并不建议我们创建多个OkHttpClient,因此全局使用一个。 如果有需要,可以使用clone方法,再进行自定义。
  • enqueue为OkHttp提供的异步方法,入门教程中并没有提到。

异步方式

异步方式和同步方式相同,第三步的execute()更为enqueue()就行,重写你们回调方法即可,这里是另开线程,所以不能更新UI。

        // 异步执行网络请求
        mOkHttpClient.newCall(request).enqueue(new Callback() {

            @Override
            public void onFailure(Request arg0, IOException arg1) {
                Log.d("h_bl", "onFailure");
            }

            @Override
            public void onResponse(Response response) throws IOException {
                String result = response.body().string();
                Log.d("h_bl", result);
            }
        });
时间: 2024-12-19 08:51:36

OKHttp简单使用的相关文章

Okhttp 使用与debug时留的大坑

Okhttp简单辅助类与debug注意事项 先贴代码(代码不全,仅供参考) import android.os.Handler;import android.os.Looper;import android.support.v4.util.ArrayMap; import com.ztesoft.zsmart.oss.foa.net.http.callback.FOACallBack;import com.ztesoft.zsmart.oss.foa.net.http.cookie.Cookie

[转]OkHttp3 最有营养的初级教程

一.前言 自从Android4.4开始,google已经开始将源码中的HttpURLConnection替换为OkHttp,而在Android6.0之后的SDK中google更是移除了对于HttpClient的支持,而市面上流行的Retrofit同样是使用OkHttp进行再次封装而来的.由此看见学习OkHttp的重要性. 本篇文章是以当前最新的版本 3.5.0为例(2.0及以上版本版本与3.0以上版本存在较大差异,本文不做深入讨论,请自行百度),使用Android Stuido作为开发环境,带领

Retrofit的优点

Retrofit的优点 可以配置不同HTTP client来实现网络请求,如okhttp.httpclient等 将接口的定义与使用分离开来,实现结构. 支持多种返回数据解析的Converter可以快速进行数据转换. 和RxJava集成的很好 因为容易和RxJava结合使用,所以对于异步请求,同步请求也不需要做额外的工作. Retrofit是基于OKHttp 简单使用 配置依赖 在module的build.gradle中添加 // Retrofit api "com.squareup.retro

简单的OkHttp使用介绍

Android系统提供了两种HTTP通信类,HttpURLConnection和HttpClient.关于HttpURLConnection和HttpClient的选择>>官方博客尽管Google在大部分安卓版本中推荐使用HttpURLConnection,但是这个类相比HttpClient实在是太难用,太弱爆了.OkHttp是一个相对成熟的解决方案,据说Android4.4的源码中可以看到HttpURLConnection已经替换成OkHttp实现了.所以我们更有理由相信OkHttp的强大.

[Android]OkHttp的简单封装-辅助框架

序言 OkHttp 的强大算是毋庸置疑了:OkHttp 基本在网络层能完成任何事情,适用任何情况:正因为如此 OkHttp 每次构建一个请求的时候不得不写大量的代码来完成相应的配置.在这里分享一个极限封装OkHttp的辅助框架,通过该框架能最大程度简化你的开发负担.好话不多说,往下看看就知道好不好. 原生 在这里举例几个原生情况下使用 okhttp 的情况. GET public void get() { Request.Builder builder = new Request.Builder

Okhttp、Volley和Gson的简单介绍和配合使用

转载自:http://www.apkbus.com/home.php?mod=space&uid=784586&do=blog&id=61255 1.okhttp是一个高效的.快速的被谷歌认可的,支持HTTP/2和SPDY volley是一个方便网络任务库,可以负责请求.加载.缓存等同步问题,也可以处理图片.JSON.文本操作起来比较简单 gson是JSON序列化和反序列化(以上三个能相互间轻松使用主要还是因为okhttp是谷歌推荐的.volley是谷歌开发的.Gson是谷歌开发的

OKHttp的简单使用

一方面,最近关于OKHttp的讨论甚嚣尘上,另一方面,我最近也更新了android6.0,发现在6.0中HttpClient不能使用了,于是决定抽时间也看一下OKHttp,总结了一点东西,与大家分享. 以前读书的时候在学校用过GitHub上的一个开源控件AsyncHttpClient,当时解决了不少问题,上传图片以及download都能实现,感觉还不错,这次看完OKHttp,暂未发现两者在功能上的差异(如果哪位小伙伴发现了可以告诉我一下). 官网对OKHttp的介绍还是比较详细,英文好的同学可以

OKHttp使用简单介绍

如今android网络方面的第三方库非常多,volley.Retrofit.OKHttp等,各有各自的特点,这边博客就来简介下怎样使用OKHttp. 梗概 OKHttp是一款高效的HTTP客户端,支持连接同一地址的链接共享同一个socket,通过连接池来减小响应延迟.还有透明的GZIP压缩.请求缓存等优势 OKHttp官网 配置环境 支持Android 2.3及其以上版本号.要求java JDK1.7以上 jar包引入 能够通过下载jar包直接导入project地址例如以下下载地址 或者通过构建

Android -- OkHttp的简单使用和封装

1,昨天把okHttp仔细的看了一下,以前都是调用同事封装好了的网络框架,直接使用很容易,但自己封装却不是那么简单,还好,今天就来自我救赎一把,就和大家写写从最基础的OKHttp的简单get.post的使用,再到它的封装. 2,OkHttp的简单使用 首先我们创建一个工程,并在布局文件中添加三个控件,TextView(用于展示获取到json后的信息).Button(点击开始请求网络).ProgressBar(网络加载提示框) ①简单的异步Get请求 第一步,创建OKHttpClient对象 第二