美文网首页
OkHttp 的简单封装

OkHttp 的简单封装

作者: SmileWei | 来源:发表于2017-08-08 18:11 被阅读0次

OkhttpIntegration

目前对应 OkHttp 版本3.8.1.

Demo地址

image

使用

Android Studio

下载 the latest JAR or grab via Maven:

    <dependency>
        <groupId>com.smile</groupId>
        <artifactId>okhttpintegration</artifactId>
        <version>1.0.4</version>
        <type>pom</type>
    </dependency>

or Gradle:

    compile 'com.smile:okhttpintegration:1.0.4'

初始化

    public class MyApplication extends Application{ 
        @Override
        public void onCreate(){
            super.onCreate();

            OkHttp.setConnectTimeOut(30);
            OkHttp.setReadTimeOut(30);
            OkHttp.setWriteTimeOut(30);
            OkHttp.setUploadReadTimeOut(30);
            OkHttp.setUploadWriteTimeOut(30);
            OkHttp.setRetryCount(2);
            OkHttp.setErrorCode("setErrorCode");
            OkHttp.setErrorStatus("state", "0000");
            OkHttp.setUserAgent("setUserAgent");
        }
    }
方法 描述
setConnectTimeOut(30) 与服务器建立连接超时时间
setReadTimeOut(30) 设置读取响应超时时间
setWriteTimeOut(30) 设置写入响应超时时间
setUploadReadTimeOut(30) 设置上传文件读取响应超时时间
setUploadWriteTimeOut(30) 设置上传文件写入响应超时时间
setRetryCount(2) 设置请求失败时的重试次数
setUserAgent("") 设置UserAgent

setErrorCode("") 和 setErrorStatus("", "")

一般情况下,对接口请求响应结果的判断有两种情况:

  • 返回的 json 数据中会包含诸如 error_code 的 key,用来表明此接口响应失败,如下代码所示;
    {
        request: "http://api.tuikexing.com",
        error_code: 50001,
        error: "!",
        error_description: "{错误码0: 1502183653-2442}"
    }
  • 返回的 json 数据结构有固定的诸如 status 的 key,根据 status key 所对应的 value 值来判断此接口是响应失败,你可以指定当 status 为 200 时代表接口响应成功。如下所示:
    {
        status: 200,
        msg: "success",
        data: [ ],
        totalPage: 0,
        totalCount: 0
    }

注意 任何时候对请求响应结果的判断不要依赖于 http 协议的 CODE 值,而应该首先检查返回的 json 数据结构是否存在 error_code 字段或 status 的值。

GET

   Map<String, Object> params = new HashMap<>();
   params.put("lang", "zh");
   params.put("type", 2);
   params.put("page", 1);
   params.put("pageSize", 10);
   OkHttp.get(HOME, params, new OkCallback() {
       @Override
       public void onResponse(String response) {
           Log.e("onResponse", response);
           Toast.makeText(context, response, Toast.LENGTH_SHORT).show();
       }
 
       @Override
       public void onFailure(String error) {
           Log.e("onFailure", error);
           Toast.makeText(context, error, Toast.LENGTH_SHORT).show();
       }
   });

POST

   Map<String, Object> params = new HashMap<>();
   params.put("email", "smile");
   params.put("password", "smile");
   OkHttp.post(LOGIN, params, new OkCallback() {
       @Override
       public void onResponse(String response) {
           Log.e("onResponse", response);
           Toast.makeText(context, response, Toast.LENGTH_SHORT).show();
       }
 
       @Override
       public void onFailure(String error) {
           Log.e("onFailure", error);
           Toast.makeText(context, error, Toast.LENGTH_SHORT).show();
       }
   });

POST JSON

   User user = new User();
   user.setAge(10);
   user.setName("Smile");
   user.setSex("男");
   String json = new Gson().toJson(user);
   
   OkHttp.postJson(LOGIN, json, new OkCallback() {
       @Override
       public void onResponse(String response) {
           Log.e("onResponse", response);
           Toast.makeText(context, response, Toast.LENGTH_SHORT).show();
       }
 
       @Override
       public void onFailure(String error) {
           Log.e("onFailure", error);
           Toast.makeText(context, error, Toast.LENGTH_SHORT).show();
       }
   });

UPLOAD FILE

   Map<String, Object> params = new HashMap<>();
   params.put("email", "smile");
   params.put("password", "smile");
   
   OkHttp.upload(LOGIN, params, "file[]", "file01", new OkCallback() {
       @Override
       public void onResponse(String response) {
           Log.e("onResponse", response);
           Toast.makeText(context, response, Toast.LENGTH_SHORT).show();
       }
 
       @Override
       public void onFailure(String error) {
           Log.e("onFailure", error);
           Toast.makeText(context, error, Toast.LENGTH_SHORT).show();
       }
   });

UPLOAD MULTIPLE FILE

   Map<String, Object> params = new HashMap<>();
   params.put("email", "smile");
   params.put("password", "smile");
   List<String> list = new ArrayList<>();
   list.add("file01");
   list.add("file02");
   list.add("file03");
   
   OkHttp.uploadMulti(LOGIN, params, "file[]", list, new OkCallback() {
       @Override
       public void onResponse(String response) {
           Log.e("onResponse", response);
           Toast.makeText(context, response, Toast.LENGTH_SHORT).show();
       }
 
       @Override
       public void onFailure(String error) {
           Log.e("onFailure", error);
           Toast.makeText(context, error, Toast.LENGTH_SHORT).show();
       }
   });

License

OkHttpDemo for Android
Copyright (c) 2017 Smile Wei (http://github.com/EasyToForget).

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

相关文章

  • OkHttp通用简单封装

    CommonOkHttp--通用OkHttp简单封装 一个用于Java应用(非安卓)的OkHttp的简单封装git...

  • Android高级开发之【OkHttp】详解(附项目源码)

    文章大纲 一、OkHttp简介二、OkHttp简单使用三、OkHttp封装四、项目源码下载 一、OkHttp简介 ...

  • OkHttp简单封装

    使用链式编程思想封装网络请求客户端 } OkHttp初始化设置,请求返回处理 // ...

  • 简单封装OkHttp

    1.首先导入依赖 2.新建一个class 3.在Activity中调用

  • Okhttp简单封装

    一、Okhttp简介Android为我们提供了两种HTTP交互的方式: HttpURLConnection 和 A...

  • OKHttp简单封装

    接口: 管理类 使用

  • okhttp简单封装

    在github 维护最新代码https://github.com/fufufufuli/fuli-util 历史版本如下

  • OkHttp 的简单封装

    OkhttpIntegration 目前对应 OkHttp 版本3.8.1. Demo地址 使用 Android ...

  • OkHttp的简单封装

    关于OkHttp的基础使用可以看我之前写的这篇文章 但是每次写网络请求,都要写一大堆重复的东西,所以肯定要封装一下...

  • OkHttp的简单封装

    主要是记录一下封装的思路~ 封装的好处: 1.可复用性 2.与业务逻辑隔离 3.可扩展性 封装的思路: 封装一个公...

网友评论

      本文标题:OkHttp 的简单封装

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