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

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

阅读 469
1 个回答

参考示例:

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

@Entry
@Component
struct demo {
  @State host: string = 'http://huawei.com';
  @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://huawei.com'
          this.caPath = '/*'
          this.fetch()
        })

      Button("POST")
        .margin({ top: 20 })
        .fontColor(Color.Blue)
        .onClick(() => {
          this.host = 'http://huawei.com'
          this.caPath = '/*'
          this.fetch()
        })
    }
    .height('100%')
    .width('100%')
  }
}
logo
HarmonyOS
子站问答
访问
宣传栏