uniapp开发H5和APP封装接口请求?

用uniapp 写APP、怎么接口请求错误了,在H5上面是能请求成功的

const pre = "Bearer ";
const request = (options = {}) => {
  let token = uni.getStorageSync("token");
  options.header["Accept"] = "application/json, text/plain, */*";
  options.header["Authori-zation"] = pre + uni.getStorageSync("token");
  return new Promise((resolve, reject) => {
    //获取接口的全连接
    uni.request({
      url: options.url, //仅为示例,并非真实接口地址。
      method: options.type || "GET",
      data: options.data || {},
      header: options.header || {},
      success: (res) => {
        const { code, result, other, msg, status } = res.data;
        if (status == 410000 || status == 410001 || status == 410002) {
          uni.clearStorage();
          resolve({ msg, status, result });
          return
        }
        if (status !== 200 && options.loading) {
            uni.showToast({
               title: msg,
               icon: "error",
            });
          resolve({ msg, status, result });
        } else {
          resolve({ result, other, msg, status });
        }
      },
      complete: (e) => {
        if (options.loading) {
          uni.hideLoading();
        }
      },
    });
  });
};
const post = (
  url,
  data,
  loading = true,
  options = {
    header: {},
  }
) => {
  options.type = "POST";
  options.data = data;
  options.url = url;
  options["loading"] = loading;
  options.header["content-type"] = "application/json";
  return request(options);
};
export { post };

在手机模拟器上面报错的信息是:

 {"errMsg":"request:fail abort statusCode:-1 Expected URL scheme 'http' or 'https' but was 'file'"}
阅读 1.5k
avatarAI BotBETA

你的问题看起来是在使用uniapp进行APP和H5的接口请求时遇到了问题。你在手机模拟器上看到的错误信息表示,你正在尝试访问一个使用'file'协议的URL,但是你的请求函数预期的URL应该使用'http'或'https'协议。

这可能是因为你的请求URL是错误的,或者你的服务器没有配置正确。你需要确保你的请求URL是有效的,并且使用'http'或'https'协议。如果你正在尝试访问本地文件,你可能需要使用'file://'协议,而不是'http://'或'https://'。

此外,你还需要确保你的服务器配置正确,可以处理来自uniapp的请求。如果你的服务器没有正确配置,那么它可能无法处理来自uniapp的请求。

在你的代码中,你需要检查options.url的值,确保它是一个有效的URL,并且使用正确的协议('http'或'https')。如果options.url的值是从某个地方获取的,你可能需要检查那个地方的代码,确保它返回正确的URL。

如果你的问题仍然存在,那么你可能需要提供更多的信息,比如你的服务器配置,或者你的options.url的值是从哪里获取的。这样我才能更好地帮助你解决问题。

1 个回答

请求的URL是什么呢?看报错信息是发起的是 file 协议?


还是说你请求的地址没有拼写完全?把你的 baseUrl 设置为完整的地址呢?比如说 https://xxx.xxx.xxx.xx/api 这样。
可能你H5可以是你本地有启动HTTP服务,所以你省略了请求地址前的域名信息?浏览器是会按照当前的域名自动拼接的,APP应该不会拼接。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题