发送网络请求能力支持Phone、2in1、Tablet、Wearable设备。并且从5.1.1(19)开始,新增支持TV设备。
发送HTTP请求,可设置请求头和请求体等参数,并返回来自服务器的HTTP响应。使用Promise异步回调。常用于获取资源,支持流处理和通过拦截器来处理请求和响应。
具体API说明详见接口文档。
导入模块。
import { rcp } from '@kit.RemoteCommunicationKit';
import { BusinessError } from '@kit.BasicServicesKit'; 创建Request对象。'https://www.example.com'请根据实际情况替换为需要请求的URL地址。
// 请求的网址是示例网址,请根据实际需求更改 const kHttpServerAddress = 'https://www.example.com/fetch'; const request = new rcp.Request(kHttpServerAddress, 'GET');
创建会话。
const session = rcp.createSession();
发起请求,并处理返回结果。
session.fetch(request).then((rep: rcp.Response) => {
console.info(`Response succeeded: ${rep}`);
// ...
}).catch((err: BusinessError) => {
// 错误处理,通过catch块,捕获error,并对error进行处理,本示例中会将错误信息展现到打印台上。
console.error(`Response error code is ${err.code}, error data is ${err.data}`);
}); HTTP GET请求是常用的通信方式之一。为了有效地实现这一目标,RemoteCommunicationKit采用了Promise和异步回调的组合策略,不仅可以高效地从服务器获取数据,还可以提高代码的可读性和可维护性。
具体API说明详见接口文档。
| 接口名 | 描述 |
|---|---|
| get(url: URLOrString, destination?: ResponseBodyDestination): Promise<Response> | 发送带有默认HTTP参数的HTTP GET请求,参数为开发者需要请求的地址及响应的目标,并返回来自服务器的HTTP响应。使用Promise异步回调。 |
导入模块。
import { rcp } from '@kit.RemoteCommunicationKit';
import { BusinessError } from '@kit.BasicServicesKit'; 创建会话,会话发起get请求。
// 1、定义请求URL,此处只给出示例,还请根据实际情况将其替换为需要请求的URL
const getURL = 'http://www.example.com/get';
// 2、创建session
const session = rcp.createSession();
// 3、使用session.get发起请求,以getURL为入参,使用Promise进行异步回调。
session.get(getURL).then((response) => {
console.info(`Response succeeded: ${response}`);
// ...
}).catch((err: BusinessError) => {
// 4、错误处理,通过catch块,捕获error,并对error进行处理,本示例中会将错误信息展现到打印台上。
console.error(`Response error code is ${err.code}, error data is ${err.data}`);
}); 发送带有默认HTTP参数的HTTP POST请求,并返回来自服务器的HTTP响应。使用Promise异步回调。常用于向服务器提交数据。与GET请求不同,POST请求将参数包含在请求主体中,适用于创建新资源、提交表单数据或执行某些操作。
具体API说明详见接口文档。
| 接口名 | 描述 |
|---|---|
| post(url: URLOrString, content?: RequestContent, destination?: ResponseBodyDestination): Promise<Response> | 发送带有默认HTTP参数的HTTP POST请求,并返回来自服务器的HTTP响应。使用Promise异步回调。 |
导入模块。
import { rcp } from '@kit.RemoteCommunicationKit';
import { BusinessError } from '@kit.BasicServicesKit'; 创建会话,使用会话发起post请求。
// 定义URL此处给出示例,请根据实际情况选择正确地址
const postURL = 'https://www.example.com';
// 定义content,请根据实际情况选择
const postContent: rcp.RequestContent = {
fields: {
'key1': 'value1',
'key2': 'value2',
'key3': 'value3'
}
}
// 创建session
const session = rcp.createSession();
// 使用post发起请求,使用Promise进行异步回调;其中content以及destination为可选参数,可根据实际情况选择
session.post(postURL, postContent)
.then((response) => {
console.info(`Response succeeded: ${JSON.stringify(response.headers)}`);
console.info(`Response succeeded: ${JSON.stringify(response.statusCode)}`);
console.info(`Response succeeded: ${JSON.stringify(postContent)}`);
// ...
})
.catch((err: BusinessError) => {
console.error(`Response error code is ${err.code}, error data is ${err.data}`);
}) 在远场通信服务框架中,HTTP PUT请求用于更新服务器上的特定资源。作为幂等操作,它确保每次请求仅影响目标资源状态。通过Promise异步编程模型,可以有效地管理和控制请求执行流程,结构化处理异步操作和反馈。
具体API说明详见接口文档。
| 接口名 | 描述 |
|---|---|
| put(url: URLOrString, content?: RequestContent, destination?: ResponseBodyDestination): Promise<Response> | 发送带有默认HTTP参数的HTTP PUT请求,并返回来自服务器的HTTP响应。使用Promise异步回调。 |
导入模块。
import { rcp } from '@kit.RemoteCommunicationKit';
import { BusinessError } from '@kit.BasicServicesKit'; 创建会话,会话发起put请求。
// 创建会话
const session = rcp.createSession();
// 定义content,请根据实际情况选择
const postContent: rcp.RequestContent = {
fields: {
'key1': 'value1',
'key2': 'value2',
'key3': 'value3'
}
}
// 会话发起PUT请求,"http://www.example.com/put"请根据实际情况替换为想要请求的URL地址。
session.put('http://www.example.com/put', postContent).then((response) => {
// 对响应的处理,此处为示例,只做打印处理
console.info(`Response succeeded: ${response}`);
// ...
}).catch((err: BusinessError) => {
// 请求错误处理
console.error(`Response error code is ${err.code}, error data is ${err.data}`);
}); HTTP HEAD请求可高效访问服务器资源头信息。它与GET请求类似,但主要的区别在于,HEAD请求只返回响应头,而不返回实体内容,这使得其在获取资源的元信息,如文件大小、修改日期等,以及检查资源是否已更改等方面更加有效。
具体API说明详见接口文档。
| 接口名 | 描述 |
|---|---|
| head(url: URLOrString): Promise<Response> | 发送带有默认HTTP参数的HTTP HEAD请求,并返回来自服务器的HTTP响应。使用Promise异步回调。 |
导入模块。
import { rcp } from '@kit.RemoteCommunicationKit';
import { BusinessError } from '@kit.BasicServicesKit'; 创建会话,会话发起head请求。
// 1、创建会话
const session = rcp.createSession();
// 2、会话发起HEAD请求,"http://www.example.com/head"请根据实际情况替换为想要请求的URL地址。
session.head('http://www.example.com/head').then((response) => {
// 3、对响应的处理,此处为示例,只做打印处理
console.info(`Response succeeded: ${response}`);
// ...
}).catch((err: BusinessError) => {
// 4、请求错误处理
console.error(`Response error code is ${err.code}, error data is ${err.data}`);
}); 在远场通信服务的框架中,Remote Communication Kit采用了一种结合发起HTTP DELETE请求与Promise异步处理的方法。具体操作如下:通过向预定义的URL发送包含默认HTTP参数的HTTP DELETE请求,即可实现对目标URL上相关资源的有效删除。这种机制不仅简化了请求的发送过程,还增强了异步处理的效率,确保了资源管理的灵活性和响应速度。
具体API说明详见接口文档。
| 接口名 | 描述 |
|---|---|
| delete(url: URLOrString): Promise<Response> | 发送带有默认HTTP参数的HTTP DELETE请求,并返回来自服务器的HTTP响应。使用Promise异步回调。 |
导入模块。
import { rcp } from '@kit.RemoteCommunicationKit';
import { BusinessError } from '@kit.BasicServicesKit'; const session = rcp.createSession();
// 请求的网址是示例网址,请根据实际需求更改
session.delete('http://www.example.com/delete').then((response) => {
console.info(`Response succeeded: ${response}`);
// ...
}).catch((err: BusinessError) => {
console.error(`Response error code is ${err.code}, error data is ${err.data}`);
}); 在使用RequestContent指定HTTP请求中要发送的数据时,可以使用Form来发送简单的HTTP表单数据。
从6.0.1(21)开始,Form表单支持使用keys来指定表单中key的发送顺序。
导入模块。
import { rcp } from '@kit.RemoteCommunicationKit';
import { BusinessError } from '@kit.BasicServicesKit'; 创建RequestContent。
// 创建Form表单数据。
const simpleForm = new rcp.Form({
'key1': 'value1',
'key2': 'value2',
});
// 指定表单中key的发送顺序。指定后,将按照keys列表中的顺序发送(不在列表中的key将不被发送);若不指定,则默认按各个key的hash顺序发送。
simpleForm.keys = ['key2', 'key1'];
// 创建request请求。请将URL地址替换为实际访问的地址。
let req = new rcp.Request('https://example.com');
req.content = simpleForm; 创建会话,并发起fetch请求。
try {
// 创建会话。
const session = rcp.createSession();
// 会话发起请求。
session.fetch(req).then((resp: rcp.Response) => {
console.info(`Response succeeded: ${JSON.stringify(resp.statusCode)}`);
// ...
session.close();
}).catch((err: BusinessError) => {
// 请求错误处理。
console.error(`Response error code is ${err.code}, error data is ${err.data}`);
session.close();
})
} catch (err) {
// 创建会话错误处理。
console.error(`createSession error code is ${err.code}, error data is ${err.data}`);
} 在使用RequestContent指定HTTP请求中要发送的数据时,可以使用MultipartForm来发送HTTP多部分表格数据。
从6.0.1(21)开始,MultipartForm表单支持使用keys来指定表单中key的发送顺序。
导入模块。
import { rcp } from '@kit.RemoteCommunicationKit';
import { BusinessError } from '@kit.BasicServicesKit'; 创建RequestContent。
// 创建MultipartForm多部分表单数据。
const multiForm = new rcp.MultipartForm({
'key1': 'value1',
'key2': 'value2',
'key3': 'value3',
});
// 定义多部分表单中的键的顺序。指定后,将按keys列表中的顺序发送(不在列表中的key不会被发送);如果不指定,则默认按照各个key的hash顺序发送。
multiForm.keys = ['key3', 'key1', 'key2'];
// 创建request请求。请将URL地址替换为实际访问的地址。
let req = new rcp.Request('https://example.com');
req.content = multiForm; 创建会话,并发起fetch请求。
try {
// 创建会话。
const session = rcp.createSession();
// 会话发起请求。
session.fetch(req).then((resp: rcp.Response) => {
console.info(`Response succeeded: ${JSON.stringify(resp.statusCode)}`);
this.textArea = JSON.stringify(resp.statusCode, null, 2);
session.close();
}).catch((err: BusinessError) => {
// 请求错误处理。
console.error(`Response error code is ${err.code}, error data is ${err.data}`);
session.close();
})
} catch (err) {
// 创建会话错误处理。
console.error(`createSession error code is ${err.code}, error data is ${err.data}`);
}