Android okHttp网络请求库详解

原创 2016年05月31日 16:35:50

okhttp 是一个 Java 的 HTTP+SPDY 客户端开发包,同时也支持 Android。需要Android 2.3以上。

特点

  • OKHttp是Android版Http客户端。非常高效,支持SPDY、连接池、GZIP和 HTTP 缓存。
  • 默认情况下,OKHttp会自动处理常见的网络问题,像二次连接、SSL的握手问题。
  • 如果你的应用程序中集成了OKHttp,Retrofit默认会使用OKHttp处理其他网络层请求。
  • 从Android4.4开始HttpURLConnection的底层实现采用的是okHttp.

用法

  1. 新建一个OkHttpClient对象
  2. 通过Request.Builder对象新建一个Request对象
  3. 返回执行结果

    • GET
private String get(String url) {
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .url(url)
                .build();
        Response response = null;
        try {
            response = client.newCall(request).execute();
            return response.body().string();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

  • POST

POST需要使用RequestBody对象,之后再构建Request对象时调用post函数将其传入即可

private String post(String url) {
        OkHttpClient client = new OkHttpClient();

        RequestBody formBody = new FormEncodingBuilder()
                .add("user", "Jurassic Park")
                .add("pass", "asasa")
                .add("time", "12132")
                .build();
        Request request = new Request.Builder()
                .url(url)
                .post(formBody)
                .build();
        Response response = null;
        try {
            response = client.newCall(request).execute();
            return response.body().string();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

此外,post的使用方法还支持文件等操作,具体使用方法有兴趣的可以自行查阅

  • 对Gson的支持

okHttp还自带了对Gson的支持

  private Person gson(String url){
        OkHttpClient client = new OkHttpClient();
        Gson gson = new Gson();
        Request request = new Request.Builder()
                .url(url)
                .build();
        Response response = null;
        try {
            response = client.newCall(request).execute();
            Person person = gson.fromJson(response.body().charStream(), Person.class);
            return person;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

  • 异步操作

以上的两个例子必须在子线程中完成,同时okHttp还提供了异步的方法调用,通过使用回调来进行异步调用,然后okHttp的回调依然不在主线程中,因此该回调中不能操作UI

private void getAsync(String url) {
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .url(url)
                .build();
        Response response = null;

        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Request request, IOException e) {

            }

            @Override
            public void onResponse(Response response) throws IOException {
                String result = response.body().string();
                Toast.makeText(getApplicationContext(),result,Toast.LENGTH_SHORT).show();
                //不能操作ui,回调依然在子线程
                Log.d("TAG", result);
            }
        });


    }

项目主页:http://www.open-open.com/lib/view/home/1435381866122

相关文章推荐

android okhttp网络请求框架

  • 2017年08月08日 17:32
  • 888KB
  • 下载

Android网络请求OkHttp的使用demo代码

  • 2016年04月18日 17:50
  • 2.82MB
  • 下载

Retrofit 2.0使用详解,配合OkHttp、Gson,Android最强网络请求框架

Retrofit终于迎来了2.0版本,也修复了老版本的一些bug,这是修复日志,各位可以自己去看看,https://github.com/square/retrofit/blob/master/CHA...

android使用okhttp进行网络请求

  • 2016年08月23日 18:34
  • 367KB
  • 下载

Retrofit 2.0使用详解,配合OkHttp、Gson,Android最强网络请求框架

Retrofit终于迎来了2.0版本,也修复了老版本的一些bug,这是修复日志,各位可以自己去看看,[https://github.com/square/retrofit/blob/master/CH...

Android OkHttp 网络请求 使用详解

对于 Android 开发来说,网络请求是必不可少的一件事情,但想要自己开发一个合适又好用的网络请求框架,对于一般人来说这是一件很难实现的事。毕竟在网络请求的过程中有很多因素需要你考虑到。而且目前 G...

Android网络请求三方库OkHttp,Retrofit的使用,及其注解使用的简介

工作内容: 1.OkHttp的Post,Get请求 2.Retrofit的使用 学习分享:

Android网络请求库 - Say hello to OkHttp

转: Android网络请求库 - Say hello to OkHttp 引言 网络请求是Android开发中必不可少的一块,通常我们可以用原生的HttpUrlConne...

android:安卓中5中网络请求库之Vellory OkHttp Retrofit

Vellory OkHttp Retrofit HttpConnection HttpClient AysncHttp
  • intbird
  • intbird
  • 2015年10月12日 19:15
  • 928

Android网络请求库okHttp进行post、get请求

OKHttp是一个Java 的 HTTP+SPDY 客户端开发包,同时也支持 Android。需要Android 2.3以上。 特点 OKHttp是Android版Http客户端。非常高效...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android okHttp网络请求库详解
举报原因:
原因补充:

(最多只允许输入30个字)