• Lv0
    粉丝0

积分2 / 贡献0

提问0答案被采纳0文章1

作者动态

    [其他] 第二次作业

    yx9wen 显示全部楼层 发表于 昨天 22:02

    第二次作业

    request接口开发步骤

    1. 从@ ohos.net.http中导入http命名空间。
    2. 调用createHttp()方法,创建一个HttpRequest对象。
    3. 调用该对象的on()方法,订阅http响应头事件,此接口会比request请求先返回。可以根据业务需要订阅此消息。
    4. 调用该对象的request()方法,传入http请求的url地址和可选参数,发起网络请求。
    5. 按照实际业务需要,解析返回结果。
    6. 调用该对象的off()方法,取消订阅http响应头事件。
    7. 当该请求使用完毕时,调用destroy()方法主动销毁。

    功能展示

    完整代码

    1. index

      import http from '@ohos.net.http';
      import { BusinessError } from '@ohos.base';
      import { exchange, ExchangeData } from '../model/exchange';
      
      @Entry
      @Component
      struct Index {
        @State value: number = 0;
        @State exchangeData:ExchangeData=new ExchangeData()
        aboutToAppear(): void {
          this.getData(1)
        }
        getData(mony:number){
          // 每一个httpRequest对应一个HTTP请求任务,不可复用
          let httpRequest = http.createHttp();
          // 用于订阅HTTP响应头,此接口会比request请求先返回。可以根据业务需要订阅此消息
          // 从API 8开始,使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。
          httpRequest.on('headersReceive', (header) => {
            console.info('header: ' + JSON.stringify(header));
          });
          httpRequest.request(
            // 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定
            "https://v2.alapi.cn/api/exchange",
            {
              method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET
              // 开发者根据自身业务需要添加header字段
              header: {
                'Content-Type': 'application/json'
              },
              // 当使用POST请求时此字段用于传递请求体内容,具体格式与服务端协商确定
              extraData: {
                "token":"qlVquQZPYSeaCi6u",
                "money": mony,
                "form":"USD",
                "to":"CNY"
              },
              expectDataType: http.HttpDataType.STRING, // 可选,指定返回数据的类型
              usingCache: true, // 可选,默认为true
              priority: 1, // 可选,默认为1
              connectTimeout: 60000, // 可选,默认为60000ms
              readTimeout: 60000, // 可选,默认为60000ms
              usingProtocol: http.HttpProtocol.HTTP1_1, // 可选,协议类型默认值由系统自动指定
              usingProxy: false, // 可选,默认不使用网络代理,自API 10开始支持该属性
            }, (err: BusinessError, data: http.HttpResponse) => {
            if (!err) {
              let exchange:exchange=JSON.parse(data.result.toString())
              this.exchangeData = exchange.data!
      
              // data.result为HTTP响应内容,可根据业务需要进行解析
              console.info('Result:' + JSON.stringify(data.result));
              console.info('code:' + JSON.stringify(data.responseCode));
              // data.header为HTTP响应头,可根据业务需要进行解析
              console.info('header:' + JSON.stringify(data.header));
              console.info('cookies:' + JSON.stringify(data.cookies)); // 8+
              // 当该请求使用完毕时,调用destroy方法主动销毁
              httpRequest.destroy();
            } else {
              console.error('error:' + JSON.stringify(err));
              // 取消订阅HTTP响应头事件
              httpRequest.off('headersReceive');
              // 当该请求使用完毕时,调用destroy方法主动销毁
              httpRequest.destroy();
            }
          }
          );
      }
        build() {
          Column() {
            TextInput({
              placeholder:"请输入兑换的金额",
              text:this.value.toString()
            }).type(InputType.Number)
              .onChange((e:string)=>{
              this.value = parseInt(e)
              this.getData(parseInt(e))
            })
            Text(this.exchangeData.exchange
            ?.toString())
          }
          .height('100%')
          .width('100%')
        }
      }
      
    2. exchange

      export class exchange
      {
        code?: number = 200;
        msg?: string = "";
        data?: ExchangeData = new ExchangeData();
        time ?: number = 0;
        usage ?: number =0;
        log_id ?: string = "";
      }
      export class ExchangeData{
        exchange ?: number = 0;
        exchange_round ?: number = 0;
        exchange_money ?: number = 0;
        currency_form ?: string = "";
        currency_form_name ?: string = "";
        currency_to ?: string = "";
        currency_to_name ?:"";
        update_time ?: string ="";
      }
      
    3. exchange

    ©著作权归作者所有,转载或内容合作请联系作者

    您尚未登录,无法参与评论,登录后可以:
    参与开源共建问题交流
    认同或收藏高质量问答
    获取积分成为开源共建先驱

    Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

    返回顶部