ProxyConfiguration:定制代理
场景介绍
在远场通信框架中,ProxyConfiguration配置会话代理设置,提供system、no-proxy和WebProxy三种选项。
- system使用系统代理,适合快速部署;
- no-proxy不使用代理,适用于需直接访问特定资源或有代理限制的环境;
- WebProxy允许开发者自定义代理设置,解决特定网络问题,优化代理路径,提升性能和用户体验。
约束与限制
定制代理能力支持Phone、2in1、Tablet、Wearable设备。并且从5.1.1(19)开始,新增支持TV设备。
使用示例
下面将对框架提供的三种选项('system','no-proxy','WebProxy')以示例代码的方式进行说明。
'no-proxy'
-
导入需要的模块。
import { rcp } from '@kit.RemoteCommunicationKit';import { BusinessError } from '@kit.BasicServicesKit'; -
创建一个新的会话对象和请求,会话用于管理后续的网络请求。
const session = rcp.createSession();// 定义请求的URL(请根据实际需求调整)const requestURL = 'https://example.com'; -
定义发起请求时需要的代理配置,在定义proxyConfiguration时选择'no-proxy'即可将代理方式选择为不使用代理方式。
// 配置请求的proxy方式为'no-proxy'const configuration: rcp.Configuration = {proxy: 'no-proxy'}// 定义request并将请求configuration添加到request中const request = new rcp.Request(requestURL, "GET");request.configuration = configuration; -
利用fetch发起网络请求并在成功或失败时进行响应的处理,此处只给出示例,对成功或失败的处理请根据实际业务来实现。
session.fetch(request).then((response: rcp.Response) => {// 处理请求成功响应console.info(`Response success, ${response}`);// 关闭会话session.close();}).catch((err: BusinessError) => {// 处理请求失败响应console.error(`The error code is ${err.code}, error data is ${err.data}`);// 关闭会话session.close();})
'system'
-
导入需要的模块。
import { rcp } from '@kit.RemoteCommunicationKit';import { BusinessError } from '@kit.BasicServicesKit'; -
创建一个新的会话对象和请求,会话用于管理后续的网络请求。
const session = rcp.createSession();// 定义请求的URL(请根据实际需求调整)const requestURL = 'https://example.com'; -
定义发起请求时需要的代理配置,在定义proxyConfiguration时选择'system'即可将代理方式选择为使用系统代理方式。
// 配置请求的proxy方式为'system'const configuration: rcp.Configuration = {proxy: 'system'}// 定义request并将请求configuration添加到request中const request = new rcp.Request(requestURL, "GET");request.configuration = configuration; -
利用fetch发起网络请求并在成功或失败时进行响应的处理,此处只给出示例,对成功或失败的处理请根据实际业务来实现。
session.fetch(request).then((response: rcp.Response) => {// 处理请求成功响应console.info(`Response success, ${response}`);// 关闭会话session.close();}).catch((err: BusinessError) => {// 处理请求失败响应console.error(`The error code is ${err.code}, error data is ${err.data}`);// 关闭会话session.close();})
WebProxy(自定义代理设置)
-
导入需要的模块。
import { rcp } from '@kit.RemoteCommunicationKit';import { BusinessError } from '@kit.BasicServicesKit'; -
创建一个新的会话对象和请求,会话用于管理后续的网络请求。
const session = rcp.createSession();// 定义请求的URL(请根据实际需求调整)const requestURL = 'https://example.com'; -
通过WebProxy自定义代理配置,通过声明式方式。
// 自定义proxyconst configuration: rcp.Configuration = {proxy: {url: 'https://www.example.com',createTunnel: 'always',exclusions: ['https://www.example1.com','https://www.example2.com']}}// 定义request并将请求configuration添加到request中const request = new rcp.Request(requestURL, "GET");request.configuration = configuration; -
利用fetch发起网络请求并在成功或失败时进行响应的处理,此处只给出示例,对成功或失败的处理请根据实际业务来实现。
session.fetch(request).then((response: rcp.Response) => {// 处理请求成功响应console.info(`Response success, ${response}`);// 关闭会话session.close();}).catch((err: BusinessError) => {// 处理请求失败响应console.error(`The error code is ${err.code}, error data is ${err.data}`);// 关闭会话session.close();})