HarmonyOS 鸿蒙Next 网络请求包含域名(多个)和证书(两套)动态切换功能的封装示例

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 网络请求包含域名(多个)和证书(两套)动态切换功能的封装示例

2 回复
import { rcp } from '@kit.RemoteCommunicationKit';
import { BusinessError } from '@kit.BasicServicesKit';

@Entry
@Component
struct demo {
  @State host: string = 'http://example.com/fetch';
  @State httpMethod: string = "POST";
  @State caPath: string = '/path/dir/';

  fetch() {
    // Configure security settings
    const securityConfig: rcp.SecurityConfiguration = {
      remoteValidation: "system",
      certificate: {
        content: "-----BEGIN CERTIFICATE-----",
        type: "PEM",
        key: this.caPath,
        keyPassword: "your-password",
      },
      serverAuthentication: {
        credential: {
          username: "exampleUser",
          password: "examplePassword",
        },
        authenticationType: "basic",
      },
    };
    // Use the security configuration in the session creation
    const session = rcp.createSession({ requestConfiguration: { security: securityConfig } });

    console.info('host:' + this.host);
    console.info('httpMethod:' + this.httpMethod);
    session.fetch(new rcp.Request(this.host, this.httpMethod)).then((response) => {
      console.info(`Response succeed: ${response}`);
    }).catch((err: BusinessError) => {
      console.error(`err: err code is ${err.code}, err message is ${err.message}`);
    });
  }

  build() {
    Column() {
      Text('点击按钮切换域名和证书')
        .fontSize(20)
        .fontWeight(FontWeight.Bold)
        .margin({ top: 20 })

      Button("GET")
        .margin({ top: 20 })
        .fontColor(Color.Blue)
        .onClick(() => {
          this.host = 'http://example.com/get'
          this.caPath = '/*'
          this.fetch()
        })

      Button("POST")
        .margin({ top: 20 })
        .fontColor(Color.Blue)
        .onClick(() => {
          this.host = 'http://example.com/post'
          this.caPath = '/*'
          this.fetch()
        })
    }
    .height('100%')
    .width('100%')
  }
}

以下是一个HarmonyOS鸿蒙Next网络请求包含域名(多个)和证书(两套)动态切换功能的封装示例:

封装步骤

  1. 导入依赖

    • 导入网络请求相关的包,如@kit.networkkit中的http模块。
  2. 配置域名和证书

    • 定义一个数组或对象来存储多个域名和对应的证书信息。
    • 证书信息包括证书路径、证书类型、密钥密码等。
  3. 创建网络请求实例

    • 根据需要动态选择域名和证书。
    • 使用http.createhttp()创建网络请求实例,并配置请求参数,如方法、URL、请求头、请求体等。
    • 在请求头中设置证书信息,以便进行SSL/TLS握手。
  4. 发送请求

    • 调用网络请求实例的request()方法发送请求。
    • 处理响应数据或错误。

注意事项

  • 确保已申请并配置了必要的网络权限,如ohos.permission.internetohos.permission.get_network_info
  • 根据实际业务需求,对域名和证书的切换逻辑进行具体实现。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部