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通。
参考链接
- 更多错误码参考Response常用错误码或者Curl错误码
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网络请求。
- 导入http模块,创建http请求对象。
- 设置请求地址URLl和参数,发起http请求。
- 获取请求结果response,并解析数据。
参考链接
- 详细信息请参考:http数据请求
如何使用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表示找不到对应的资源文件。需要对镜像环境进行配置:
- 在DevEco中打开Teminal命令窗口。
- 输入命令:
ohpm config set registry https://repo.harmonyos.com/ohpm/
- 执行安装Axios三方库命令:
ohpm install [@ohos](/user/ohos)/axios
Http请求的官方示例代码中的extra data部分怎么写
适用于:HarmonyOS 3.1 Beta API 9
解决措施
-
鼠标移到extraData, ctrl+鼠标左键,可以跳转到sdk中,里面有关于extraData的传参说明。
可以发现文档中对extraData的定义是“extraData?: string | Object”,也就是extraData支持string和Object两种类型。
-
有如下两种方法可供选择。
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
再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
模块进行网络请求,支持并发、断点续传等高级功能,提升网络请求效率。