美文网首页
android 从okHttp的简单使用到理解

android 从okHttp的简单使用到理解

作者: 打死也不加班 | 来源:发表于2019-01-04 10:05 被阅读0次

OkHttp是一个处理网络请求的开源项目,一个网络请求框架。

优点:

1.支持http请求,https请求。
2.支持文件下载、加载图片。
3.支持get,post请求。
4.基于Http的文件上传。

缺点:

1.callback回来是在子线程里面, 不能刷新UI,需要我们手动处理。
2.封装比较麻烦。

使用方式:

1.添加依赖

implementation 'com.squareup.okhttp3:okhttp:3.8.1'

2 请求

2.1.get请求
1.同步get请求

        String url = "http://wwww.baidu.com";
        OkHttpClient okHttpClient = new OkHttpClient();
        //默认get请求 可以省略
        Request request = new Request.Builder()
                .url(url)
                .get()
                .build();
        Call call = okHttpClient.newCall(request);
        try {
            Response response = call.execute();
        } catch (IOException e) {
            e.printStackTrace();
        } 

因为是同步方式(耗时操作) 不要在主线程执行耗时操作 改进代码:

  String url = "http://wwww.baidu.com";
  OkHttpClient okHttpClient = new OkHttpClient();
  //默认get请求 可以省略
  Request request = new Request.Builder().url(url).get().build();
  Call call = okHttpClient.newCall(request);
  new Thread(new Runnable() {
       @Override
        public void run() {
           try {
               Response response = call.execute();
           } catch (IOException e) {
               e.printStackTrace();
           }
        }
  }).start();

2.异步get请求

        String url = "http://wwww.baidu.com";
        OkHttpClient okHttpClient = new OkHttpClient();
        //默认get请求,可以省略
        Request request = new Request.Builder()
                .url(url)
                .get()
                .build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.d(TAG, "onFailure: ");
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Log.d(TAG, "onResponse: " + response.body().string());
            }
        });

call.execute 同步方式
call.enqueue 异步方式

2.2 post请求
get把参数包含在url中,post通过request body传递参数
在构造Request对象时,需要多构造一个RequestBody对象,用它来携带我们要提交的数据.


image.png

构造 RequestBody 需要指定MediaType,用于描述请求/响应 body 的内容类型

1.RequestBody--json数据提交

    //MediaType  设置Content-Type 标头中包含的媒体类型值
    public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
    
    String json="****";//json字符串数据
    Request request = new Request.Builder()
              .url(url)
              .post(RequestBody.create(JSON,json))
              .build();

2.FormBody--表单数据提交

       FormBody formBody = new FormBody.Builder()
                .add("id", "001")
                .add("name", "张三")
                .build();
        Request request=new Request.Builder().url(netUrl).post(formBody).build();

3.MultipartBody--文件上传

        MediaType mediaType = MediaType.parse("text/x-markdown; charset=utf-8");
    //上传文件
    public void uoloadFile(String localPath){
        String url = "http://wwww.baidu.com";
        OkHttpClient okHttpClient = new OkHttpClient();
        File file = new File(localPath);
        Request request = new Request.Builder()
                .url(url)
                .post(RequestBody.create(mediaType, file))
                .build();
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.d(TAG, "onFailure: " + e.getMessage());
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Log.d(TAG, "onResponse: " + response.body().string());
            }
        });
    }

相关文章

  • android 从okHttp的简单使用到理解

    OkHttp是一个处理网络请求的开源项目,一个网络请求框架。 优点: 1.支持http请求,https请求。2.支...

  • 说网络-扯扯蛋

    很多骚年在进行编程工作的时候会用到网络库,Android里面我们从Volley到OKHttp,iOS里面我们从AS...

  • Anroid 网络请求 与 OkHttp

    这篇文章主要讲 Android 网络请求时所使用到的各个请求库的关系,以及 OkHttp3 的介绍。(如理解有误,...

  • okhttp简述

    这篇文章主要讲 Android 网络请求时所使用到的各个请求库的关系,以及 OkHttp3 的介绍。(如理解有误,...

  • OKhttp源码的简单分析

    OKhttp源码的简单分析 源码分析基于okhttp4.1.0,代码全部为kotlin。 先看okhttp的基本使...

  • NoHttp的使用以及封装

    上一篇写到OkHttp,简单的对比了下咱们安卓开发中用到的网络框架,到了android 6.0也不会支持volle...

  • Okhttp同步请求源码分析

    进阶android,OKhttp源码分析——同步请求的源码分析 OKhttp是我们经常用到的框架,作为开发者们,我...

  • android 文件下载

    用到的网络库 :okhttp3OkHttp是Square开源的轻量级框架,是一款现代、高效、快速的Android版...

  • OKHttp源码解析

    前言 关于okhttp在Android开发中经常使用到,但是最近在从okhttp 2.0升级之后,发现改动的内容蛮...

  • okhttp源码分析

    android开发中大部分的网络框架都用到了okhttp,okhttp既HTTP框架,今天通过代码理清一下okht...

网友评论

      本文标题:android 从okHttp的简单使用到理解

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