鸿蒙api12 使用 axios 在模拟器出现{ code“:2300007,“message“:“Couldn‘t connect to server }

解决方案:

后端的接口进行 内网穿透  后,将baseURL修改

整合axios

基于OpenHarmony三方库中心仓里的axios进行基本整合

import axios, { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from '@ohos/axios';

const request = axios.create({
  baseURL: '内网穿透地址',
  timeout: 5000,
  headers: { 'Content-Type': 'application/json' }
});

// 添加请求拦截器
request.interceptors.request.use(
  (config: InternalAxiosRequestConfig) => {
    // 对请求数据做点什么
    return config;
  },
  (err: AxiosError) => {
    // 对请求错误做些什么
    return Promise.reject(err);
  });

// 添加响应拦截器
request.interceptors.response.use(
  (res: AxiosResponse) => {
    // 对响应数据做点什么
    return res;
  },
  (err: AxiosError) => {
    // 对响应错误做点什么
    return Promise.reject(err);
  });

export default request

发现问题:

由于预览器没有一个很好的效果于是使用模拟器进行调试,却发生了报错

09-11 16:08:42.428   10009-10009   A00000/成功???                    com.heiye.Test        I     {"message":"{\"code\":2300007,\"message\":\"Couldn't connect to server\"}","name":"AxiosError","stack":"    at AxiosError (oh_modules/.ohpm/@ohos+axios@2.2.3/oh_modules/@ohos/axios/src/main/ets/components/lib/core/AxiosError.js:22:1)\n    at anonymous (oh_modules/.ohpm/@ohos+axios@2.2.3/oh_modules/@ohos/axios/src/main/ets/components/lib/adapters/ohos/http.js:57:1)\n","config":{"transitional":{"silentJSONParsing":true,"forcedJSONParsing":true,"clarifyTimeoutError":false},"adapter":["ohos"],"transformRequest":[null],"transformResponse":[null],"timeout":5000,"xsrfCookieName":"XSRF-TOKEN","xsrfHeaderName":"X-XSRF-TOKEN","maxContentLength":-1,"maxBodyLength":-1,"env":{"Blob":null},"headers":{"Accept":"application/json, text/plain, */*","Content-Type":"application/json"},"baseURL":"https://localhost:9000","params":{"heard":1},"method":"get","url":"/history/list"},"code":2300007,"status":null}

 报错意思是:无法连接服务器

这我就纳闷了,明明啥也没写错

后面我心血来潮直接使用预览器发现是可以的

 由于预览器不能直接打印出数据,但是从后端来看是发送到了请求

我就上鸿蒙的论坛找有没有相关的问题

问题:

用axios请求接口报错Error AxiosError: {"code":2300007,"message":"Couldn't connect to server"}-华为开发者论坛 | 华为开发者联盟 (huawei.com)

似乎是ip地址的问题 也就是baseURL

const request = axios.create({
  baseURL: 'http://localhost:9000',
  timeout: 5000,
  headers: { 'Content-Type': 'application/json' }
});

细细一想如果使用模拟器使用http://localhost:9000(也试过本地ip地址127.0.0.1不行),那还是访问我电脑里的localhost吗,似乎不是?但是不一定谁都有一台服务器,就算有部署一个test项目?这也太大材小用了,于是我想起了内网穿透

下载cpolar

这边推荐使用cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站

直接跟着文档下,后面就靠各位了

官方文档文档 - cpolar 极点云官网

在一些环境下内网穿透是一个很好的选择

其中安装时会跳一个窗口

无视风险继续安装(bushi)

解决问题:

安装完后使用https的公网地址将baseURL更换

const request = axios.create({
  baseURL: '内网穿透地址',
  timeout: 5000,
  headers: { 'Content-Type': 'application/json' }
});

测一测 

完美 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值