本地小程序开发工具测试请求接口都很正常,使用预览蚂简和真机调试功能在手机上运行请求接口总是失败。
小程序上线后,部分手机请求接口正常,部分手机请求接口失败,将请求接口复制到谷歌浏览器中查询总是成功的。
restful 接口定义为: https://ip:port/bus/:router_name ,其中 router_name 是个变量。实际请求接口为: https://ip:port/bus/993路 ,可以看到:请求地址中的变量 router_name 被 993路 给替换了。问题就出在这里, 请求地址中含有中文 。
在 小程序开发工具 、 谷歌浏览器 和 部分请求成功的手机 上最终发出的请求都会对请求地址中的中文汉字进行编码,如下:
在 开发工具中预览功能 、 开发工具中真机调试功能 和 部分请求不成功的手机 上最终发出的请求并不会对中文进行编码,如下:
上面分析了请求接口失败是因为部分手机没有对请求地址中的中文进行编码,解决方法为利用 js 自带的 api encodeURIComponent() 处理。
有一点需要注意:不能对整个请求地址进行编返郑码,那么的话会对所有除字母闷世裤、数字以外的符号进行编码,会变成下面这样,实际请求中仍然会报错。
在处理 restful 接口过程中,有一步用具体指(如: 991路 )替换请求地址中的变量(如: https://ip:port/bus/:router_name 中的 :router_name ),此时先对 991路 进行编码再替换变量值即可。
调用接口失败是因为是访问路径不对,错误请查看http响应状态码出现这种情况应该去问服务器人员使用正确的地址。消费者的配置问题,设置的超时时间太短,如果生产者执行的逻辑需要很长的时间超过了消费者的超时时间,也会出现timeout异常。
在写代码时,出现调用接口失败的情况,可以使用try函数和catch语句捕获异常并处理,然后在接口后面写上throwException语句,把异常抛出让使用接口的人处理异常。
如果是RuntimeException异常,表示是自己程序某些地方写错了,就必须找到并修改程序。
如果存在超时异常,则可能是服务器问题。如服务器带宽、内存、CPU、存储空间等不足时间会出现异常;这也可能是生产商的问题。
代码本身的接口存在缺陷,调用生产者接口的使用者也可能导致超时异常。
未勾选这个设置在任何环境下发送http网络请求会失败
需要到官方的微信小程序后台的 开发管理 ->开发设置 ->服务器域名配置位置进行域名的配置
点击小程序右上角 ··· 打开菜单
->点击开发调试按钮
->打开调试
->打开后需要重春前铅新打开小程序
->然后小程序界面中出现绿色的 vConsole 按钮即可
检查您的手机手悔腊机和公司扒好的开发环境是否在同一局域网内, 一般就是用着同一个网络就ok
因此写了今天这个文章, 欢迎大家补充和讨论哈!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)