HarmonyOS鸿蒙Next中http Proxy如何正确配置才可以连接本机网络???

HarmonyOS鸿蒙Next中http Proxy如何正确配置才可以连接本机网络??? https://developer.huawei.com/consumer/cn/forum/topic/0210196902793768886?fid=0109140870620153026&pid=0312196962641760735

5 回复

开发者你好

  • 如果您的网络无需代理即可访问Internet,设置了代理会影响模拟器的登录授权,请检查并将HTTP Proxy设置为“No proxy”。

  • 如果您的网络需要代理访问Internet,未设置代理会影响模拟器的登录授权,请检查并将HTTP Proxy设置为“Manual proxy configuration”,设置方法可参考DevEco Studio代理设置

    模拟器无法链接网络时可以参考以下方案:

    1. 建议配置安全合理的DNS解析地址,例如:114.114.114.114,删除其他DNS配置。
    2. 如果希望通过代理服务器去请求目标服务器,可以参考模拟器网络代理配置
    3. windows操作系统建议将电脑用户名修改为英文或数字。

【背景知识】

模拟器界面由两部分构成:设备屏幕和工具栏。

  • 设备屏幕:部分模拟了真实设备的显示屏,让开发者可以在模拟环境中对应用进行调试和测试。通过模拟器,开发者可以在不依赖于物理设备的情况下进行开发工作,节省了设备和资源成本。
  • 工具栏:提供了各种调试工具和控制选项,帮助开发者模拟不同的场景和操作,以提高用户的调试效率。

模拟器访问网络利用的是本地计算机的以太网或者WLAN,与本地计算机共享同一网络资源。如出现无法连接网络的情况,请开发者确认本地网络访问是否受到了限制(如使用公司内网)。如果对网络访问进行了限制,则需要在模拟器上配置网络代理。

更多关于HarmonyOS鸿蒙Next中http Proxy如何正确配置才可以连接本机网络???的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


如果你的场景是在本机上搭建了服务,你应该这么操作(以下以macOS为例)

1、清除你之前进行的所有配置,确保没有其它配置生效。

2、打开终端,输入ifconfig获取本机ip信息

3、找到ifconfig输出结果中的en0下的inet地址,该地址即你在模拟器中可访问到本机的地址。

根据此方法,我在本机上拉起了Apache服务,在模拟器中打开浏览器,访问对应地址,成功获取到了Apache默认结果。 cke_6461.png

  1. 代理模式选择

    • 若无需代理:直接选择"No proxy"模式
    • 若需本地代理:选择"Manual proxy configuration"(手动代理配置)
  2. 代理参数设置

    • Host name:填写代理服务器的IP地址
    • Port number:填写代理服务的端口号
    • No proxy for:指定直连域名(如*.domain.com)
  3. 模拟器访问互联网

    • 模拟器默认共享本地计算机网络资源
    • 若连接失败需检查:
      • 本地网络是否受限(如公司内网)
      • 访问HTTPS服务需安装数字证书
  4. 模拟器访问本地服务

    • 通过默认网关地址:10.0.2.2:<localPort>
    • 其中<localPort>为计算机实际服务端口

在HarmonyOS Next中配置HTTP代理连接本机网络,需在module.json5文件中配置网络权限。在abilities字段下添加"usesCleartextTraffic": true,并在requestPermissions中申请ohos.permission.INTERNET权限。代理配置通常在应用代码中通过HttpProxy类设置,使用setHttpProxy()方法指定代理服务器地址和端口。

在HarmonyOS Next中配置HTTP代理以连接本机网络,核心是通过@ohos.net.http模块的createHttpProxy方法实现。以下是关键步骤和代码示例:

  1. 导入模块
import { http } from '@ohos.net.http';
  1. 创建代理配置
let proxyConfig: http.HttpProxy = {
  host: '127.0.0.1',    // 代理服务器地址(本机可用localhost)
  port: 8888,           // 代理端口号
  exclusionList: []     // 排除代理的地址列表
};
  1. 创建并应用代理
// 创建代理对象
let httpProxy = http.createHttpProxy(proxyConfig);

// 发起请求时通过options指定代理
let request = http.createHttp();
let options = {
  method: http.RequestMethod.GET,
  proxy: httpProxy,      // 关键:配置代理
  connectTimeout: 60000,
  readTimeout: 60000,
  header: { 'Content-Type': 'application/json' }
};

// 执行请求
request.request('https://api.example.com/data', options, (err, data) => {
  if (err) {
    console.error('Request failed:', err.code, err.message);
  } else {
    console.log('Response:', data.result);
  }
});

注意事项

  • 确保代理服务器(如Charles/Fiddler)已在本地运行并监听指定端口
  • 真机调试时需保证设备与代理服务器在同一网络,并使用电脑IP地址而非127.0.0.1
  • 如需绕过代理访问特定地址,可在exclusionList中添加域名(如['*.huawei.com']
  • 网络权限需在module.json5中配置:
"requestPermissions": [
  {
    "name": "ohos.permission.INTERNET"
  }
]

若代理配置正确但仍无法连接,请检查:

  1. 防火墙是否拦截代理端口
  2. 代理服务器是否支持HTTP/HTTPS转发
  3. 设备网络是否允许代理连接
回到顶部