小程序必须使用大咐 HTTPS/WSS 发起网络码仿兄请求。请求时系统会对服务器域名使用的 HTTPS 证书进迟袭行校验,如果校验失败,则请求不能成功发起。
本地小程序开发工具测试请求接口都很正常,使用预览蚂简和真机调试功能在手机上运行请求接口总是失败。
小程序上线后,部分手机请求接口正常,部分手机请求接口失败,将请求接口复制到谷歌浏览器中查询总是成功的。
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路 进行编码再替换变量值即可。
安装Fiddler,百度搜索Fiddler,就会有下载链接。启动Fiddler,开始没芹设置。点击“tools-->fiddler options”.
设置HTTPS选项。在设置过程中会有d框,请允许。
设置connect选项,记住代理端口号,后面会使用。在设置过程中会有d框,请允许。设置完之后记得一定要重启Fiddler软件,不然不能使用。
通过ipconfig查看PC的IP地址。(快捷键“ctrl+r”,输入cmd,d出黑框,然后输入ipconfig)。我的IP地址为192.168.1.14,需要记下
设置手机端。所有的Android机应该都可以长安wlan图标,然后棚数进入网络连接,在连接详情里面设置代理。代理的主机名为上面查到的ip地址,比如我的为192.168.1.14,端口为connect是设置的,默认为8888。图片枯和毕是米四截图。
然后手机端访问"192.168.1.14:8888"(你自己的ip地址和端口号),如果出现响应页面说明成功。
开始愉快的抓包吧!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)