From 4724234e649d89116b0b3f60900f70b51e77c23c Mon Sep 17 00:00:00 2001 From: Yangys Date: Mon, 27 Mar 2023 16:14:22 +0800 Subject: [PATCH] Improve documentation of request2 Signed-off-by: Yangys --- .../connectivity/http-request.md | 72 +++++++++++++++++++ .../reference/apis/js-apis-http.md | 24 +++---- 2 files changed, 84 insertions(+), 12 deletions(-) diff --git a/zh-cn/application-dev/connectivity/http-request.md b/zh-cn/application-dev/connectivity/http-request.md index 8c4c663fcc..173496fe2d 100644 --- a/zh-cn/application-dev/connectivity/http-request.md +++ b/zh-cn/application-dev/connectivity/http-request.md @@ -90,6 +90,78 @@ httpRequest.request( ); ``` +## request2接口开发步骤 + +1. 从@ohos.net.http.d.ts中导入http命名空间。 +2. 调用createHttp()方法,创建一个HttpRequest对象。 +3. 调用该对象的on()方法,可以根据业务需要订阅HTTP响应头事件、HTTP流式响应数据接收事件、HTTP流式响应数据接收进度事件和HTTP流式响应数据接收完毕事件。 +4. 调用该对象的request2()方法,传入http请求的url地址和可选参数,发起网络请求。 +5. 按照实际业务需要,可以解析返回的响应码。 +6. 调用该对象的off()方法,取消订阅相应事件。 +7. 当该请求使用完毕时,调用destroy()方法主动销毁。 + +```js +// 引入包名 +import http from 'ohos.net.http' + +// 每一个httpRequest对应一个HTTP请求任务,不可复用 +let httpRequest = http.createHttp(); +// 用于订阅HTTP响应头事件 +httpRequest.on('headersReceive', (header) => { + console.info('header: ' + JSON.stringify(header)); +}); +// 用于订阅HTTP流式响应数据接收事件 +let res = ''; +httpRequest.on('dataReceive', (data) => { + res += data; + console.info('res: ' + res); +}); +// 用于订阅HTTP流式响应数据接收完毕事件 +httpRequest.on('dataEnd', () => { + console.info('No more data in response, data receive end'); +}); +// 用于订阅HTTP流式响应数据接收进度事件 +httpRequest.on('dataProgress', (data) => { + console.log("dataProgress receiveSize:" + data.receiveSize+ ", totalSize:" + data.totalSize); +}); + +httpRequest.request2( + // 填写HTTP请求的URL地址,可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定 + "EXAMPLE_URL", + { + method: http.RequestMethod.POST, // 可选,默认为http.RequestMethod.GET + // 开发者根据自身业务需要添加header字段 + header: { + 'Content-Type': 'application/json' + }, + // 当使用POST请求时此字段用于传递内容 + extraData: { + "data": "data to send", + }, + expectDataType: http.HttpDataType.STRING, // 可选,指定返回数据的类型 + usingCache: true, // 可选,默认为true + priority: 1, // 可选,默认为1 + connectTimeout: 60000, // 可选,默认为60000ms + readTimeout: 60000, // 可选,默认为60000ms。若传输的数据较大,需要较长的时间,建议增大该参数以保证数据传输正常终止 + usingProtocol: http.HttpProtocol.HTTP1_1, // 可选,协议类型默认值由系统自动指定 + }, (err, data) => { + console.info('error:' + JSON.stringify(err)); + console.info('ResponseCode :' + JSON.stringify(data)); + // 取消订阅HTTP响应头事件 + httpRequest.off('headersReceive'); + // 取消订阅HTTP流式响应数据接收事件 + httpRequest.off('dataReceive'); + // 取消订阅HTTP流式响应数据接收进度事件 + httpRequest.off('dataProgress'); + // 取消订阅HTTP流式响应数据接收完毕事件 + httpRequest.off('dataEnd'); + // 当该请求使用完毕时,调用destroy方法主动销毁 + httpRequest.destroy(); + } +); + +``` + ## 相关实例 针对HTTP数据请求,有以下相关实例可供参考: - [`Http:`数据请求(ArkTS)(API9))](https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Connectivity/Http) diff --git a/zh-cn/application-dev/reference/apis/js-apis-http.md b/zh-cn/application-dev/reference/apis/js-apis-http.md index afdc43e1e0..fbab7e810a 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-http.md +++ b/zh-cn/application-dev/reference/apis/js-apis-http.md @@ -332,7 +332,7 @@ httpRequest.destroy(); ### request210+ -request2(url: string, callback: AsyncCallback\): void +request2(url: string, callback: AsyncCallback\): void 根据URL地址和相关配置项,发起HTTP网络请求并返回流式响应,使用callback方式作为异步方法。 @@ -345,7 +345,7 @@ request2(url: string, callback: AsyncCallback\): void | 参数名 | 类型 | 必填 | 说明 | | -------- | ---------------------------------------------- | ---- | ----------------------------------------------- | | url | string | 是 | 发起网络请求的URL地址。 | -| callback | AsyncCallback\ | 是 | 回调函数。 | +| callback | AsyncCallback\<[number](#responsecode)\> | 是 | 回调函数。 | **错误码:** @@ -366,9 +366,9 @@ request2(url: string, callback: AsyncCallback\): void **示例:** ```js -httpRequest.request2("EXAMPLE_URL", (err) => { +httpRequest.request2("EXAMPLE_URL", (err, data) => { if (!err) { - console.info("request2 OK!"); + console.info("request2 OK! ResponseCode is " + JSON.stringify(data)); } else { console.info("request2 ERROR : err = " + JSON.stringify(err)); } @@ -377,7 +377,7 @@ httpRequest.request2("EXAMPLE_URL", (err) => { ### request210+ -request2(url: string, options: HttpRequestOptions, callback: AsyncCallback\): void +request2(url: string, options: HttpRequestOptions, callback: AsyncCallback\): void 根据URL地址和相关配置项,发起HTTP网络请求并返回流式响应,使用callback方式作为异步方法。 @@ -391,7 +391,7 @@ request2(url: string, options: HttpRequestOptions, callback: AsyncCallback\ | 是 | 回调函数。 | +| callback | AsyncCallback\<[number](#responsecode)\> | 是 | 回调函数。 | **错误码:** @@ -444,9 +444,9 @@ httpRequest.request2("EXAMPLE_URL", }, readTimeout: 60000, connectTimeout: 60000 -}, (err) => { +}, (err, data) => { if (!err) { - console.info("request2 OK!"); + console.info("request2 OK! ResponseCode is " + JSON.stringify(data)); } else { console.info("request2 ERROR : err = " + JSON.stringify(err)); } @@ -454,7 +454,7 @@ httpRequest.request2("EXAMPLE_URL", ``` ### request210+ -request2(url: string, options? : HttpRequestOptions): Promise\ +request2(url: string, options? : HttpRequestOptions): Promise\ 根据URL地址,发起HTTP网络请求并返回流式响应,使用Promise方式作为异步方法。 @@ -473,7 +473,7 @@ request2(url: string, options? : HttpRequestOptions): Promise\ | 类型 | 说明 | | :------------------------------------- | :-------------------------------- | -| Promise\ | 以Promise形式返回发起请求的结果。 | +| Promise\<[number](#responsecode)\> | 以Promise形式返回发起请求的结果。 | **错误码:** @@ -526,8 +526,8 @@ let promise = httpRequest.request("EXAMPLE_URL", { 'Content-Type': 'application/json' } }); -promise.then(() => { - console.info("request2 OK!"); +promise.then((data) => { + console.info("request2 OK!" + JSON.stringify(data)); }).catch((err) => { console.info("request2 ERROR : err = " + JSON.stringify(err)); }); -- GitLab