当前位置: 首页 > 知识库问答 >
问题:

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

夏嘉德
2024-01-29

用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'"}

共有2个答案

鲁博雅
2024-01-29

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


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

席嘉祯
2024-01-29

你的问题看起来是在使用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的值是从哪里获取的。这样我才能更好地帮助你解决问题。

 类似资料:
  • 我想在app上实现图片、word、ppt、excel、txt等文档的预览,不要下载预览,有没有什么好的方式可以在线预览的,但是要能阻止文件下载,和手机截屏功能,有人实现过么?

  • Win32环境下动态链接库(DLL)编程原理 比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。其中可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间

  • 使用GET请求例如: 只要有一个get请求参数为:token:true, 后面的所有请求都会自动带上authorization和令牌访问,这是怎么回事? 即使传参不带token,请求链接上也会带上authorization和令牌访问,这是哪里出问题了吗?

  • 接口封装和代码整理 使用 OpenSBI 提供的服务 OpenSBI 实际上不仅起到了 bootloader 的作用,还为我们提供了一些底层系统服务供我们在编写内核时使用,以简化内核实现并提高内核跨硬件细节的能力。这层底层系统服务接口称为 SBI(Supervisor Binary Interface),是 S Mode 的 OS 和 M Mode 执行环境之间的标准接口约定。 参考 OpenSB

  • 由于需要做H5和APP 需要一个唯一key 来绑定他们 判断出是同一个手机 查看了官方文档后 发现有一个方法 uni.getSystemInfo 但是真实测试中发现 在微信浏览器 手机自带浏览器 和 打包的测试APP中 deviceId 不一样 请问还有什么办法能实现一个在多浏览器和APP中唯一值的办法吗? 如果没有办法获取唯一值 尝试使用IP+设备型号+设备名称来做一个减少重复概率 还能加其他什

  • 本文向大家介绍php-app开发接口加密详解,包括了php-app开发接口加密详解的使用技巧和注意事项,需要的朋友参考一下 自己平时工作中用到的一套接口加密规则,记录下来以后用: 客户端代码demo: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。