HarmonyOS 鸿蒙Next网络管理开发常见问题

HarmonyOS 鸿蒙Next网络管理开发常见问题

网络管理子系统

http网络请求中extraData支持的数据格式有哪些

适用于:HarmonyOS 3.1 Beta API 9

解决措施

extraData代表发送请求的额外数据,支持如下数据:

  • 当HTTP请求为POST、PUT方法时,此字段为HTTP请求的content。
  • 当HTTP请求为GET、OPTIONS、DELETE、TRACE、CONNECT方法时,此字段为HTTP请求的参数补充,参数内容会拼接到URL中进行发送。
  • 开发者传入string对象,开发者需要自行编码,将编码后的string传入。

http请求的错误码28是什么意思

适用于:HarmonyOS 3.1 Beta API 9

问题现象

发起http请求后报错,错误码28。

解决措施

错误码28代表CURLE_OPERATION_TIMEDOUT,操作超时。网络请求底层使用libcurl库,更多错误码可以查看相应文档。

参考链接

http请求中response错误码返回6是什么意思

适用于:HarmonyOS 3.1 Beta API 9

问题现象

发起http请求后,返回信息中response错误码为6。

解决措施

错误码6表示地址无法解析主机,可以尝试ping一下request中的URL,确认是否可以ping通。

参考链接

http请求如何以json形式进行传输

适用于:HarmonyOS 3.1 Beta API 9

解决措施

在HTTP协议消息头中,使用Content-Type来表示媒体类型信息。它被用来告诉服务端如何处理请求的数据,以及告诉客户端(一般是浏览器)如何解析响应的数据,比如显示图片,解析html或仅仅展示一个文本等。

设置该参数值为application/json,请求中的数据就会以json形式进行传输。

this.options = {
  method:  http.RequestMethod.GET,
  extraData: this.extraData,
  header: { 'Content-Type': 'application/json' },
  readTimeout: 50000,
  connectTimeout: 50000
}

如何理解connection.getDefaultNet返回对象netHandle中的netId

适用于:HarmonyOS 3.1 Beta API 9

问题现象

netId的值如0、100分别代表什么含义?

解决措施

正常情况下,netHandle里的netId为0时表示没联网,大于等于100时为有网状态。

如何使用http请求从网络上获取数据

适用于:HarmonyOS 3.1 Beta API 9

解决措施

使用@ohos.net.http模块来发起http网络请求。

  1. 导入http模块,创建http请求对象。
  2. 设置请求地址URLl和参数,发起http请求。
  3. 获取请求结果response,并解析数据。

参考链接

如何使用JS封装网络请求

适用于:HarmonyOS 3.1 Beta API 9

解决措施

HarmonyOS网络请求支持JS语言开发方式,可直接使用。具体使用参考如下文档:网络连接

基于JS开发智能手表应用,如何编写网络请求

适用于:HarmonyOS 3.1 Beta API 9

解决措施

HarmonyOS网络请求支持JS语言开发方式,可直接使用。具体使用参考如下文档:网络连接

应用增加权限"ohos.permission.NOTIFICATION_CONTROLLER",编译后无法启动

适用于:HarmonyOS 3.1 Beta API 9

问题现象

启动报错:error: install failed due to grant request permissions failed.

解决措施

权限"ohos.permission.NOTIFICATION_CONTROLLER为系统级“system core”权限,第三方应用无法获取该权限。

Http网络连接中的通用知识

适用于:HarmonyOS 3.1 Beta API 9

解决措施

Http请求需要申请ohos.permission.INTERNET权限,其错误码参考文档:错误码合集

常用的请求方式为GET、POST,请求成功时,返回的业务数据在data.result中,cookie信息则在data.cookies中,更改字符集方法为:在请求头head中添加参数为

'Content-Type':"application/json; charset=UTF-8"。

其请求网页时,返回的数据有时为超长文本内容,console.log无法正确输出。

参考链接

OpenHarmony的http接口如何设置cookie

适用于:

解决措施

HttpRequestOptions中的header是一个Object类型,可以直接在header里设置cookie,具体操作可参考data请求

Socket连接中支持发送哪些数据类型

适用于:HarmonyOS 3.1 Beta API 9

目前socket连接仅支持发送string类型和ArrayBuffer类型数据。

按照Axios三方库的下载安装步骤安装Axios,报错404

适用于:HarmonyOS 3.1 Beta API 9

问题现象

按照Axios三方库的下载安装步骤安装Axios,执行命令“npm install @ohos/axios --save”报错,错误码404。

解决措施

错误码404表示找不到对应的资源文件。需要对镜像环境进行配置:

  1. 在DevEco中打开Teminal命令窗口。
  2. 输入命令:
ohpm config set registry https://repo.harmonyos.com/ohpm/
  1. 执行安装Axios三方库命令:
ohpm install [@ohos](/user/ohos)/axios

Http请求的官方示例代码中的extra data部分怎么写

适用于:HarmonyOS 3.1 Beta API 9

解决措施

  1. 鼠标移到extraData, ctrl+鼠标左键,可以跳转到sdk中,里面有关于extraData的传参说明。

    可以发现文档中对extraData的定义是“extraData?: string | Object”,也就是extraData支持string和Object两种类型。

  2. 有如下两种方法可供选择。

1)extraData:"data to send";
2)extraData:{ data:"data to send", },

设备连接WiFi后,如何获取当前设备的IP地址

适用于:

解决措施

使用wifiManager模块获取ipInfo,然后转换为IP常用格式,注意wifiManager.getIpInfo()接口需要权限 ohos.permission.GET_WIFI_INFO。

代码示例

import wifiManager from '[@ohos](/user/ohos).wifiManager'
let ipAddress = wifiManager.getIpInfo().ipAddress;
let ip = (ipAddress >>> 24) + "." + (ipAddress >> 16 & 0xFF) + "." + (ipAddress >> 8 & 0xFF) + "." + (ipAddress & 0xFF);

如何通过网络请求获取数据并通过List组件展示

适用于:HarmonyOS 3.1 Beta API 9

问题现象

如何通过网络请求获取数据并通过List组件展示

解决措施

通过http组件发送网络请求获取数据,然后在List组件中使用循环渲染组件遍历展示数据。

参考文档:网络请求 循环渲染

WebSocket连接是否支持MQTT协议

适用于:HarmonyOS 3.1 Beta API 9

问题现象

WebSocket连接是否支持MQTT协议

解决措施

目前webSocket不支持MQTT协议。

如何使用网络接口获取数据库MySQL中的数据?

适用于:HarmonyOS 3.1 Beta API 9

问题现象

如何使用网络接口获取数据库MySQL中的数据?

解决措施

目前不支持直接从MySQL数据库中读取数据。可以使用其他语言开发一个服务端,并连接MySQL数据库,从中读取数据。然后使用ArkTS的网络请求接口从服务端获取数据。

socket连接报错,错误码88

适用于:HarmonyOS 3.1 Beta API 9

问题现象

socket连接报错,错误码88

解决措施

错误码88代表连接通道已关闭。可能原因有socket连接未绑定ip、端口或者端口不可用。

Stage模型中如何申请网络访问权限

适用于:HarmonyOS 3.1 Beta API 9

问题现象

stage模型中如何申请网络访问权限

解决措施

在工程中的module.json5配置文件中添加网络访问权限,示例如下:

{
  "module": {
   ...
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET",
        "reason": "xxxxxx",
        "usedScene": {
          "abilities": [
            "xxxxxx"
          ],
          "when": "always"
        }
      }
    ]
  }
}

是否支持https双向认证

适用于:HarmonyOS 3.1 Beta API 9

问题现象

是否支持https双向认证

解决措施

目前不支持https双向认证。

State模型如何配置支持http明文传输

适用于:HarmonyOS 3.1 Beta API 9

问题现象

State模型如何配置支持http明文传输

解决措施

无需配置,默认支持http明文传输数据。

Image组件加载网络图片,pixmap与直接访问url有什么区别

适用于:HarmonyOS 3.1 Beta API 9

问题现象

Image组件加载网络图片,pixmap与直接访问url有什么区别

解决措施

两者皆可加载网络图片,使用pixelMap方式时,可以对图片进行更多的效果设置,功能更为强大。

image组件开发参考如下文档:image开发指导


更多关于HarmonyOS 鸿蒙Next网络管理开发常见问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

再HarmonyOS SDK开发,是否也可以使用axios呢?

更多关于HarmonyOS 鸿蒙Next网络管理开发常见问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


  • 网络权限配置:确保在config.json中正确配置网络权限,如ohos.permission.INTERNET,否则应用无法访问网络。

  • 网络状态监听:使用@ohos.net.connection模块监听网络状态变化,及时处理网络断开或切换的情况。

  • HTTP请求超时:设置合理的超时时间,避免因网络延迟导致请求长时间无响应。

  • SSL证书验证:确保使用有效的SSL证书,避免因证书问题导致HTTPS请求失败。

  • 网络缓存管理:合理使用缓存机制,减少重复请求,提升应用性能。

  • 多网络环境适配:考虑Wi-Fi、移动数据等不同网络环境下的适配,确保应用在各种网络条件下稳定运行。

  • 网络请求优化:使用@ohos.net.http模块进行网络请求,支持并发、断点续传等高级功能,提升网络请求效率。

回到顶部