解决方案:
将后端的接口进行 内网穿透 后,将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}
报错意思是:无法连接服务器
这我就纳闷了,明明啥也没写错
后面我心血来潮直接使用预览器发现是可以的
由于预览器不能直接打印出数据,但是从后端来看是发送到了请求
我就上鸿蒙的论坛找有没有相关的问题
问题:
似乎是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' }
});
测一测
完美