【小程序开发填坑记】 之 解决小程序真机调试时报错 request:fail -102:net::ERR_CONNECTION_REFUSED

创作背景

  • 本菜鸡最近想开发个 微信小程序 ,说不定能参加个什么比赛,拿个奖之类的(虽然不太可能)
  • 但很不巧,因为从未开发过微信小程序,所以各种 bug 蜂拥而至,妄图将我击退
  • 可我不甘示弱,顽强的坚持到了现在
  • 写下这篇文章以帮助自己及各位解决问题

问题再现

  • 本菜鸡使用的是 pythondjango 框架作为后台服务端
  • 首先,我想让用户使用我的小程序时进行登录操作(像绝大多数的小程序一样)
  • 所以我要 获得用户登录的 code,然后 利用 wx.request 将 code 发送给 django 后台进行用户登录操作,并 将结果反馈给我的小程序前端
  • 可我遇到了如下一坨坨问题 ┑( ̄Д  ̄)┍
  • 关键它们报的错都是 request:fail -102:net::ERR_CONNECTION_REFUSED /(ㄒoㄒ)/~~

1. 后台接收不到 POST 请求

问题代码
  • 问题代码如下
wx.request({
  url: 'http://127.0.0.1:9999/user/login',
  method: 'POST',
  data: {
    js_code: res.code
  },
  header: {
    'content-type': 'application/json'
  },
  success (res) {
    console.log(res);
    
  },
  fail (res) {
    console.log(res);
  }
})

在这里插入图片描述

  • 后台空空如也,什么请求都没有接收到
解决思路
  • 按照官方文档所述
    在这里插入图片描述
解决方案
  • 因为是 POST 请求,所以 header 中的 content-type 改为 application/x-www-form-urlencoded
  • 本地编译后,后台成功接收到 POST 请求
  • 注:后台可能报错 Forbidden (CSRF cookie not set.)
    • 解决方案:把 settings.py 中的这一行注释掉
      在这里插入图片描述

2. 域名检查

  • 本地编译成功后,我就启用了真机调试
  • 我本以为没有问题了,但还是报这个错,同样的,后台没有接收到任何请求
问题代码
  • 问题代码如下
wx.request({
  url: 'http://127.0.0.1:9999/user/login',
  method: 'POST',
  data: {
    js_code: res.code
  },
  header: {
    'content-type': 'application/x-www-form-urlencoded'
  },
  success (res) {
    console.log(res);
    
  },
  fail (res) {
    console.log(res);
  }
})
解决思路
  • 按照官方文档的描述(如图)
    在这里插入图片描述
  1. wx.request 所发起的请求都是 https,发送 http 请求是不支持的,如果要支持的话,需要勾选如下图所示的选项
    在这里插入图片描述
  2. 请求的 IP 不可以是 localhost ,只能是 127.0.0.1 (电脑测试的时候可以用这个,但真机调试必须用局域网 IP)或本机所属的局域网 IP
    • 这里的局域网 IP 指的是 要真机调试的手机和电脑在同一个局域网中,这时候 IP 可以使用电脑的 IP
    • 查看电脑 IP (以 Windows 操作系统为例)
      • windows 操作系统中使用 win+R 快捷键打开运行
      • 输入 cmd 打开命令行
      • 输入命令 ipconfig 即可查询得到本机的 IP
      • 或者在工具栏找到网络,右键 打开 “网络和 Internet 设置”
      • 点击 更改连接属性
      • 往下翻,IPV4 地址 即为所求
    • 以我的为例,我要请求的 url 应该改为 http://172.22.202.74:9999/user/login
  3. 同时,django 后台也要设置为 外部网络可以访问,设置方法如下
    • setting.py 中设置 ALLOWED_HOSTS = ['*']
    • 启动 django 项目时使用命令 python manage.py 0.0.0.0:【端口号】
    • 设置为 0.0.0.0 即为 任意IP均可访问

结果展示

在这里插入图片描述

  • 成功解决 bug !!!



结尾

以上就是我要分享的内容,因为学识尚浅,会有不足,还请各位大佬指正。
有什么问题也可在评论区留言。
在这里插入图片描述

  • 26
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 27
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值