美文网首页
OKHTTP使用详解

OKHTTP使用详解

作者: 会写代码的小猿猴 | 来源:发表于2021-05-18 14:46 被阅读0次

以前做Android开发一直用的httpclient,最近参加了工作,发现真正的项目里面用的是okhttp,就想要针对它来写一篇文章记录一下,也是希望自己能够弄懂它,尽快摆脱菜鸟的身份。话不多说,进入主题。[参照原文]https://www.cnblogs.com/alterem/p/11403695.html

okhttp其实就是一套网络请求的框架,它的作用和httpclient一样,只是好像在Android6.0以后谷歌就删除了httpclient,所以现在大家还是写着用okhttp吧,毕竟程序员还是要跟上技术的迭代和更新,这是非常重要的。

在使用okhttp的时候,需要现在项目中添加okhttp的依赖,具体的添加方法是将项目目录切换到Project,找到app目录下的build.gradle,在dependencies中添加implementation 'com.squareup.okhttp3:okhttp:3.10.0',如图: QQ截图20210518141337.png

一、OKhttp进行GET请求(四步完成)

1、拿到OkHttpClient对象

OkHttpClient client = new OkHttpClient()

2 . 构造Request对象

Request request = new Request.Builder()
                .get()
                .url("https:www.baidu.com")
                .build();

如果GET请求需要加请求参数直接用?拼接在url里面,不同参数之间用&拼接,例如:
https:www.baidu.com?username=admin&password=admin

3、将Request封装为Call

Call call = client.newCall(request);

4 . 根据需要调用同步或者异步请求方法

//同步调用,返回Response,会抛出IO异常
Response response = call.execute();

//异步调用,并设置回调函数
call.enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
        Toast.makeText(OkHttpActivity.this, "get failed", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onResponse(Call call, final Response response) throws IOException {
        final String res = response.body().string();
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                contentTv.setText(res);
            }
        });
    }
});

同步调用会阻塞主线程,一般不用
异步调用的runOnUiThread()类似于Handler,用来更新ui,另外一定要记住,所有的网络请求都不能在主线程中,所以okhttp的所有操作都要在子线程中执行。

二、使用okhttp进行post请求并提交键值对参数(五步)

1、拿到OKhttpclient对象

okhttpclient client=new OKhttpclient();

2、构建FormBody传入参数

FormBody formBody = new FormBody.Builder()
                .add("username", "admin")
                .add("password", "admin")
                .build();

3 . 构建Request,将FormBody作为Post方法的参数传入

                .url("http://www.jianshu.com/")
                .post(formBody)
                .build();

4 . 将Request封装为Call

Call call = client.newCall(request);

5 . 调用请求,重写回调方法

call.enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
        Toast.makeText(OkHttpActivity.this, "Post Failed", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        final String res = response.body().string();
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                contentTv.setText(res);
            }
        });
    }
});

相关文章

  • Android网络框架

    Android OKHttp3.0 以上使用方法 Android OKHttp3.0 以上使用方法详解Retrof...

  • okHttp 源码解析

    OkHttp 源码详解 OkHttp应该是目前Android平台上使用最为广泛的开源网络库了,Android 在6...

  • Okhttp 使用详解

    一, OKHttp介绍 二、使用 1. 创建OkHttpClient 一个最简单的OkHttpClient 一个复...

  • OkHttp使用详解

    今天学习了一下OkHttp,在这里做个总结,希望可以帮助到有需要的人,好了,废话不多说,进入正题。 一、OkHtt...

  • OkHttp使用详解

    今天学习了一下OkHttp,在这里做个总结,希望可以帮助到有需要的人,好了,废话不多说,进入正题。 一、OkHtt...

  • OkHttp 使用详解

    资料 github源码 资源文件 OkHttpOkio gradle配置 OkHttp优点 OkHttp扮演着传输...

  • OKHTTP使用详解

    以前做Android开发一直用的httpclient,最近参加了工作,发现真正的项目里面用的是okhttp,就想要...

  • OKHttp使用详解

    1、简介 OkHttp 是一个默认高效的 HTTP 客户端: HTTP/2 支持允许对同一主机的所有请求共享一个套...

  • 《详解OkHttp》视频课程介绍

    课程介绍 《详解OkHttp》课程是我们为Android工程师打造的一门从零到完全掌握OkHttp使用,熟悉OkH...

  • Android OKHttp使用详解

    一,OKHttp介绍 okhttp是一个第三方类库,用于android中请求网络。 这是一个开源项目,是安卓端最火...

网友评论

      本文标题:OKHTTP使用详解

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