HarmonyOS 鸿蒙Next axios网络请求

发布于 1周前 作者 caililin 最后一次编辑是 5天前 来自 鸿蒙OS

@ohos/axios”: "^2.2.0"网络请求获取的响应数据resp可以完整拿到,但是去获取resp.xx就一直提示undefined,本地把resp的debug数据拷贝下来又可以正常解析 网络请求的数据就是undefined 以下是封装代码

post请求

async post<F extends BaseReq, E>(url: string, query: F): Promise<string> {
    return await this.instance.post<E, AxiosResponse<E>, F>(url, query).then((response: AxiosResponse<E>) => {
      return JSON.stringify(response.data)
    });
  }

实体类

export interface  BaseResp<T> { responseCode: string responseMessage: string data: T  }

export  interface  GetKeyResp { clientPrivateKey: string serverPublicKey: string  }
2 回复

let resp : BaseResp<GetKeyResp>=JSON.oarse(data)中的data输出结果控制台能直接打印出数值嘛?按照描述如果到这一步data是提供的值的话

let resp: BaseResp<GetKeyResp> =
  JSON.parse('{"data":{"clientPrivateKey":"123","serverPublicKey":"321"},"responseCode":"0000","responseMessage":"成功"}')
console.info(JSON.stringify(resp.responseCode + ''));

console.info(JSON.stringify(resp.data.clientPrivateKey + ''))

//也可以参考一下这种写法

async post<T = undefined>(url: string, data?: T): Promise<Result> {
  let result: Result = {}
  let res: AxiosResponse = await axios.post<string, AxiosResponse<string>, T>(url, data === undefined ? null : data)
  result.statue = res ? JSON.stringify(res.status) : '';
  result.data = res ? JSON.stringify(res.data) : '';
  result.statusText = res ? res.statusText : '';
  return result
}

export interface Result {

  // currentBaseUrl 当前BaseUrl
  currentBaseUrl?: string,

  // status 来自服务器响应的 HTTP 状态码
  statue?: string

  // data 由服务器提供的响应
  data?: string

  // statusText 来自服务器响应的 HTTP 状态信息
  statusText?: string,
}

在HarmonyOS鸿蒙Next环境中使用axios进行网络请求时,你需要确保几个关键要素已经正确配置和初始化。

首先,确认你的项目已经正确集成了axios库。这通常通过npm或yarn安装完成:

npm install axios
# 或者
yarn add axios

其次,由于HarmonyOS开发环境可能涉及特定的权限和配置,确保你的manifest.json或相应配置文件中已经声明了网络访问权限。例如,你可能需要添加如下权限:

"requiredPermissions": [
    "ohos.permission.INTERNET"
]

接下来,在你的代码中,你可以按照axios的标准用法来发起网络请求。例如:

import axios from 'axios';

axios.get('https://api.example.com/data')
    .then(response => {
        console.log(response.data);
    })
    .catch(error => {
        console.error('Error fetching data:', error);
    });

如果在HarmonyOS环境下遇到特定问题,比如跨域请求失败或证书验证问题,你可能需要调整请求配置或系统安全设置。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部