HarmonyOS鸿蒙Next中引入ohos.data.storage和http.createHttp()无法创建一直等待
HarmonyOS鸿蒙Next中引入ohos.data.storage和http.createHttp()无法创建一直等待
// @ts-nocheck
import router from ‘@system.router’ import http from ‘@ohos.net.http’ import dataStorage from ‘@ohos.data.storage’ import featureAbility from ‘@ohos.ability.featureAbility’
export default { data: { name: “”, pwd:"" }, onInit() { console.info(this.$t(‘app.name’)) }, login(){ let httpRequest = http.createHttp(); httpRequest.request( // 填写http请求的url地址,可以带参数也可以不带参数。URL地址需要开发者自定义。GET请求的参数可以在extraData中指定 “****”, { method: ‘GET’, // 可选,默认为“GET” // 开发者根据自身业务需要添加header字段 header: { ‘Content-Type’: ‘application/json’ }, // 当使用POST请求时此字段用于传递内容 //extraData: “data to post”, readTimeout: 60000, // 可选,默认为60000ms connectTimeout: 60000 // 可选,默认为60000ms },(err, data) => { if (!err) { // data.result为http响应内容,可根据业务需要进行解析 let result = data.result; console.info(‘Result:’ + data.result); console.info(‘code:’ + data.responseCode); // data.header为http响应头,可根据业务需要进行解析 console.info(‘header:’ + data.header); // this.storageSet(“accessToken”,result.accessToken) router.push({ uri: ‘pages/success/success’ }) } else { console.info(‘error:’ + err.data); } } ); }, storageSet(key,value){ var context = featureAbility.getContext() context.getFilesDir().then(v=>{ let storage = dataStorage.getStorageSync(v + ‘/prevetion’) storage.putSync(‘accessToken’,result.accessToken ) storage.flushSync() }) } }
这里想做的是,登录完成后将其存放token(利用Api 6中的@system.storage,这个是可以用的,看到此方法已不在维护,利用@ohos.data.storage出现问题
dataStorage.getStorageSync 获取数据后,使用data里的变量进行接收。
更多关于HarmonyOS鸿蒙Next中引入ohos.data.storage和http.createHttp()无法创建一直等待的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
楼主你好,请先检查是否已添加网络权限,以下代码供参考:
```javascript
import http from '[@ohos](/user/ohos).net.http'
import dataStorage from '[@ohos](/user/ohos).data.storage'
import featureAbility from '[@ohos](/user/ohos).ability.featureAbility'
export default {
data: {},
onInit() {
var that = this;
let httpRequest= http.createHttp();
let uri = "https://www.harmonyos.com/assets/config/trustDomain.json?origin=developer"
this.httpResult = "2222";
httpRequest.request(uri, {
method: 'GET',
header: {
'Content-Type': 'application/json'
},
readTimeout: 30000,
connectTimeout: 30000
},(err, data) => {
if (!err) {
console.info('=============结果:' + JSON.stringify(data.result));
that.storageSet("accessToken","1111");
} else {
console.info('===============error:' + err.data);
}
});
},
storageSet(key,value){
var context = featureAbility.getContext()
context.getFilesDir().then(v=>{
let storage = dataStorage.getStorageSync(v + '/prevetion')
console.info('===============storageSet:' + storage);
})
}
}
有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html
===============storageSet: undefined
欢迎开发小伙伴们进来帮帮楼主
在HarmonyOS鸿蒙Next中,ohos.data.storage
和http.createHttp()
无法创建并一直等待的问题,可能是由于以下原因导致的:
-
权限问题:确保应用已正确配置所需的权限。
ohos.data.storage
需要ohos.permission.READ_USER_STORAGE
和ohos.permission.WRITE_USER_STORAGE
权限,而http.createHttp()
需要ohos.permission.INTERNET
权限。如果权限未正确配置,可能会导致操作无法完成。 -
网络问题:
http.createHttp()
依赖于网络连接。如果设备网络不稳定或未连接,可能会导致请求一直等待。检查设备的网络连接状态,确保网络正常。 -
API调用顺序:确保在调用
ohos.data.storage
和http.createHttp()
时,API的调用顺序正确。例如,在http.createHttp()
之前,确保网络已连接,并且在ohos.data.storage
操作之前,确保存储系统已初始化。 -
异步操作:
http.createHttp()
是异步操作,确保在调用时正确处理回调函数或使用Promise
/async/await
语法,以避免阻塞主线程。 -
系统资源限制:如果系统资源(如内存、存储空间)不足,可能会导致操作无法完成。检查设备的资源使用情况,确保有足够的资源支持操作。
-
API版本兼容性:确保使用的API版本与鸿蒙Next系统版本兼容。如果API版本不兼容,可能会导致操作失败或一直等待。
-
日志分析:查看系统日志或应用日志,获取更多关于操作失败的详细信息。日志中可能会提供具体的错误代码或描述,帮助定位问题。
通过以上步骤,可以初步排查ohos.data.storage
和http.createHttp()
无法创建并一直等待的问题。
在HarmonyOS鸿蒙Next中,ohos.data.storage
用于本地数据存储,而http.createHttp()
用于创建HTTP请求。如果遇到无法创建且一直等待的问题,可能是以下原因:
- 权限问题:确保应用已获取必要的网络和存储权限。
- 网络问题:检查网络连接是否正常,或尝试使用其他网络。
- API调用错误:确认
http.createHttp()
的调用方式正确,且参数配置无误。 - 异步处理:确保HTTP请求在异步任务中执行,避免阻塞主线程。
建议检查日志以获取更多错误信息,并根据具体情况进行调试。