OpenHarmony开发者论坛

标题: 第二次作业 [打印本页]

作者: yx9wen    时间: 昨天 22:02
标题: 第二次作业
[md]# 第二次作业

#### request接口开发步骤

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

#### 功能展示

![](https://foruda.gitee.com/images/ ... 75cd04_15068494.png)

![](https://foruda.gitee.com/images/ ... 8b8b06_15068494.png)

#### 完整代码

1. index

   ```json
   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

   ```json
   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
[/md]




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5