美文网首页
OkHttp的探索

OkHttp的探索

作者: 沉默的舞者 | 来源:发表于2017-06-13 22:57 被阅读0次

我们知道,要完成一次网络请求,需要发送request和接收response,正常情况下当我们使用正常的http协议时,其中涉及到了建立连接,维护连接,缓存处理以及cookie处理等问题,这就显得很麻烦了。
索性,OkHttp将其封装好,为我们解决了大部分问题,下面我们就来看看如何使用OkHttp进行网络请求的发送。
OkHttp将http的请求过程封装为一个Call类,Call的接口代码如下:

/**
 * A call is a request that has been prepared for execution. A call can be canceled. As this object
 * represents a single request/response pair (stream), it cannot be executed twice.
 */
public interface Call extends Cloneable {

  Request request();

  void enqueue(Callback responseCallback);

  void cancel();

  boolean isExecuted();

  boolean isCanceled();

  /**
   * Create a new, identical call to this one which can be enqueued or executed even if this call
   * has already been.
   */
  Call clone();

  interface Factory {
    Call newCall(Request request);
  }
}

其中,Factory是他的工厂类,每次使用OkHttp的时候都要使用它。

我们可以对接口进行尝试调用,先尝试最基本的GET

private final OkHttpClient client = new OkHttpClient();

public void run() throws Exception {
    Request request = new Request.Builder()
        .url("http://www.mx.com/tryGET") .build();

    Response response = client.newCall(request).execute();
    if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

    Headers responseHeaders = response.headers();
    for (int i = 0; i < responseHeaders.size(); i++) {
    }
}

第一行代码实现了Call.Factory接口, 是Call的工厂类, Call负责发送执行请求和读取响应.
enqueue()方法是为了维护请求队列,暂时还用不到。
cancel()取消请求, clone()能够对请求进行复用。
然后试用POST提交表单

 private final OkHttpClient client = new OkHttpClient();

  public void run() throws Exception {
    RequestBody formBody = new FormBody.Builder()
        .add("name", "ClassOne")
        .build();
    Request request = new Request.Builder()
        .url("https://westore.chenhaonee.cn/goodsDetail")
        .post(formBody)
        .build();

    Response response = client.newCall(request).execute();
    if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
  }

至此,我可以说已经找到了一种比较方便的方法进行网络请求

相关文章

  • OkHttp的探索

    我们知道,要完成一次网络请求,需要发送request和接收response,正常情况下当我们使用正常的http协议...

  • Retrofit2 完全解析 探索与okhttp之间的关系

    Retrofit2 完全解析 探索与okhttp之间的关系

  • OkHttp探索记

    探索之前还是要走走流程的,步骤不能少,毕竟大家都这么写了,话不多说,先上使用步骤。 使用步骤 1.不管三七二十一先...

  • 探索 OkHttp 原理

    前言 1. OkHttp 请求处理流程概述 当我们发起同步请求时,请求会被 Dispatcher 放到同步请求队列...

  • 源码解析

    OKHttp源码解析 Fresco图片框架内部实现原理探索 Android的Context Manager(服务管...

  • 资源

    okHttp的使用: OkHttp使用完全教程OkHttp官方教程解析-彻底入门OkHttp使用 okHttp的源...

  • 【Android源码伴读】OkHttp源码探索

    原载于个人博客, 转载请注明出处. 本文讲OkHttp. 总体来说它是一个高效简洁易用易扩展的网络库. OkHtt...

  • OkHttp探索之深入(基本概览)

    前言:      OkHttp 是 Android 经典的网络架构 工程比较大涉及知识点比较多,持续更新 相关...

  • OKHttp探索之二(网络缓存)

    OkHttp 之缓存 Cache主要有一个缓存类 带上一些问题来看 缓存谁?缓存如何启用?缓存采用哪些策略?缓存...

  • 6.1开源框架-okhttp网络框架-详解

    okhttp网络框架 OkHttp使用简介 OkHttp源码剖析 1.OkHttp使用简介 创建客户端Okhttp...

网友评论

      本文标题:OkHttp的探索

      本文链接:https://www.haomeiwen.com/subject/mkvjqxtx.html