鸿蒙开源第三方组件——OkHttp请求转化组件Ok2curl 精华

某只的MJ
发布于 2021-7-30 16:19
浏览
2收藏

前言

基于安卓平台既有的请求转化工具组件Ok2Curl(原链接), 实现鸿蒙的功能化迁移。
代码已经开源到(开源链接),欢迎相关各位开发者或使用者参与讨论并给出提出宝贵意见。

概述

ok2curl主要用于,将OkHttp格式的请求的字符串,整合并转换为curl格式的字符串。
转换后的curl格式字符串,更具备泛用性,可直接导入Postman等第三方软件来实现快速请求。

组件功能展示

1.Sample界面
鸿蒙开源第三方组件——OkHttp请求转化组件Ok2curl-鸿蒙开发者社区

2.Get请求结果(点击第一个按钮)
鸿蒙开源第三方组件——OkHttp请求转化组件Ok2curl-鸿蒙开发者社区

3.Post请求结果(点击第二个按钮)
鸿蒙开源第三方组件——OkHttp请求转化组件Ok2curl-鸿蒙开发者社区

4.更改过header的Get请求结果(点击第三个按钮)
鸿蒙开源第三方组件——OkHttp请求转化组件Ok2curl-鸿蒙开发者社区

组件在项目中的引入(maven)

allprojects{
    repositories{
        mavenCentral()
    }
}
dependencies {
	implementation 'io.github.dzsf:ok2curl:1.0.0'
}

Sample解析

1.http请求的不同类别

按照请求方式将http请求,分为GET请求、POST请求、更改过header的GET请求,
以上述三种类别作为主要示例,设计3种不同的请求方式,各自用一个按钮来绑定并展示。

而在实现上,通过对请求类型的区分,只使用 getRequest()一个方法,封装更加优雅

public static Request getRequest(String type) {
        switch (type) {
            case TYPE_GET:
                return sampleGetRequest();
            case TYPE_POST:
                return samplePostRequest();
            case TYPE_GET_MODIFIED:
                return modifiedGetRequest();
            default:
                throw new IllegalArgumentException("Invalid request type");
        }
    }

2.Sample的核心实现

1)OkHttp请求字符串的组装
因为组件的核心功能就是将OkHttp请求字符串转化成另一个格式,作为数据的源头,各种OkHttp请求(带有各种附加属性)的组织和封装就是首要任务。

在数据组织上,请求的数据需要延续 OkHttp的请求方式,
使用第三方开放组件okhttp3.Request的Builder()接口来组织我们的原始请求:

以最简单的Get请求为例

// 引入第三方包
import okhttp3.Request;
// ~
// 创建请求实例,组织请求信息
return new Request.Builder()
   .url("所需要get请求的uri")
   .cacheControl(CacheControl.FORCE_CACHE)
   .build();

真正与之对接的,是组件自封装的CurlBuilder类的各种构造方法,
这些构造方法,okhttp3.Request类型的入参是其默认首个参数,
它们实现了对各种请求参数的实际组织和封装。

// 引入自封装的CurlBuilder类
import com.moczul.ok2curl.CurlBuilder;
// ~
final String curl = new CurlBuilder(
   RequestFactory.getRequest(type), 
   -1L, modifiers, Options.EMPTY)
   .build();

2)鸿蒙UI上的组件映射

import com.moczul.ok2curl.ResourceTable;
// ~
   super.setUIContent(ResourceTable.Layout_ability_main);
// ~
    findComponentById(ResourceTable.Id_get_request)
      .setClickedListener(this);

鸿蒙为了方便广大开发者,在UI组件的布局上,使用xml格式的映射表。
上面的"Layout_ability_main"就指向了工程中路径为
/resource/base/layout/ability_main.xml 配置文件。

<Button
        ohos:id="$+id:get_request"
        ohos:height="match_content"
        ohos:width="match_parent"
        ohos:top_padding="16vp"
        ~
        ohos:bottom_margin="5vp"
        ohos:text_size="50"
        ohos:clickable="true"
        ohos:background_element="$graphic:button_element"
        ohos:text="$string:sample_get_request" />

第一段代理里的"ResourceTable.Id_get_request",
其中的’Id_get_request’即会通过映射查找,
定位到第二段代码中的ohos:id为 get_request 的画面元素

项目贡献人

刘方蕾 夏金 柴柏新

结语

项目地址: gitee
欢迎大家批评指导~

已于2021-7-30 16:19:16修改
3
收藏 2
回复
举报
回复
    相关推荐