微信小程序给 thinkphp后端发送请求出现错误 Wrong number of segments 问题的解决 【踩坑记录】

简介: 本文记录了微信小程序向ThinkPHP后端发送请求时出现"Wrong number of segments"错误的解决方法。问题原因是小程序请求header中的token变量名写错,导致token未正确传递至后端。作者提供了详细的检查步骤和建议,包括验证URL路径、参数规范和路由配置的匹配,以确保请求能正确发送和处理。

微信小程序代码部分

 //给后端接口发送一个json请求,并且得通过token鉴权
 ToUpdatePwd(){
   
       wx.request({
   
         url: 'http://robin.com/User',
         method:'POST',
         header:{
   
            'content-type': 'application/json', 
            'token':store.token
        },
         success(res){
   
             console.log(res.data)
         }
       })
    },

PHP后端部分

 public function handle($request,Closure $next)
    {
   
        //第一步先取token
        $token = $request->header('token');
        // 先判断token是否为空
        if(!$token){
   
            return  json(['error_code'=>999,'msg'=>'token不存在','data'=>''],440);
        }
        // token 存在 再使用jwt进行校验token
        $res = (new TokenServer())->checkToken($token);
        if ($res['code'] != 1 ){
   
            return json(['error_code'=>999,'msg'=>$res['msg'],'data'=>''],400);
        }
        $request->uid = $res['data']->uid;
        return $next($request);
    }

错误显示

在这里插入图片描述

这里提示 wrong number of segements , 百度了一下说这个问题是 后端解码token缺了一些东西(没正确的解码),然后我去抓了下包发现,我小程序端发送请求的时候,token是undifend,然后检查了一下store中的token发现,是我写错了变量名(😂好低级的错误)

在这里插入图片描述

解决方案及步骤(总结)

微信小程序向后端发送请求时出现"Wrong number of segments"错误,通常是由于请求的URL路径不正确或请求参数不符合规范所导致的。

在ThinkPHP后端中,这个错误通常发生在执行控制器方法之前,因为ThinkPHP会根据请求的URL路径来匹配相应的控制器和方法。

要解决这个问题,你可以按照以下步骤进行排查:

  1. 检查请求的URL路径是否正确。确保你在微信小程序中发送请求时,URL路径是正确的。例如,如果你在ThinkPHP中定义了一个控制器名为"Index",并且该控制器有一个名为"test"的方法,那么正确的URL路径应该是类似于"http://example.com/index/test" 的形式。
  2. 检查请求的参数是否符合规范。如果你的控制器方法需要接收参数,确保你在微信小程序中发送请求时,参数的数量和格式是正确的。例如,如果你的控制器方法需要接收两个参数,那么你在微信小程序中发送请求时也需要提供两个参数。
  3. 检查URL路径和参数是否与路由配置匹配。在ThinkPHP中,你可以在路由配置文件中定义URL路径和参数的映射关系。确保你在路由配置文件中定义的路径和参数与你的控制器方法的定义相匹配。

如果以上步骤都没有解决问题,你可以进一步检查你的控制器方法和路由配置,确保它们没有其他错误或问题。


相关文章
|
8月前
|
监控 Java 应用服务中间件
低并发编程|如何用720个请求让后端服务器瘫痪
本次故障因应用启动时未有效校验核心依赖模块初始化异常,导致后续请求处理中抛出无法捕获的错误,引发线程阻塞,最终耗尽HSF线程池,服务不可用。排查发现类初始化失败且异常未被正确处理,结合线程无限等待问题,确认为依赖初始化异常与流处理中断所致。修复措施包括加强启动校验、捕获Throwable及设置合理超时。总结指出,系统稳定性需从细节入手,防微杜渐,避免连锁故障。
低并发编程|如何用720个请求让后端服务器瘫痪
|
11月前
|
人工智能 小程序 NoSQL
【一步步开发AI运动小程序】二十一、如何将AI运动项目配置持久化到后端?
本文介绍基于云智「Ai运动识别引擎」的运动配置持久化方案,旨在优化小程序或Uni APP中AI运动识别能力。通过将运动检测参数(如`Key`、`Name`、`TickMode`、`rules`或`samples`)持久化到后端,可避免因频繁调整运动参数而重新发布应用,提升用户体验。持久化数据结构支持规则和姿态样本存储,适用于关系数据库、文件或文档数据库(如MongoDB)。此外,云智还提供运动自动适配工具及「AI乐运动」产品,助力快速实现AI体育、全民健身等场景。
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
3652 12
|
小程序 前端开发 算法
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
468 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
小程序 开发者
微信小程序之网络数据请求 wx:request的简单使用
这篇文章介绍了微信小程序中如何使用wx.request进行网络数据请求,包括请求的配置、请求的格式以及如何在开发阶段关闭请求的合法检验。
微信小程序之网络数据请求 wx:request的简单使用
|
小程序 Java
小程序通过get请求提交数据到java后台
小程序通过get请求提交数据到java后台
157 0
|
算法
Leetcode 313. Super Ugly Number
题目翻译成中文是『超级丑数』,啥叫丑数?丑数就是素因子只有2,3,5的数,7 14 21不是丑数,因为他们都有7这个素数。 这里的超级丑数只是对丑数的一个扩展,超级丑数的素因子不再仅限于2 3 5,而是由题目给定一个素数数组。与朴素丑数算法相比,只是将素因子变了而已,解法还是和朴素丑数一致的。
276 1
|
存储 SQL 算法
LeetCode 题目 65:有效数字(Valid Number)【python】
LeetCode 题目 65:有效数字(Valid Number)【python】
|
存储 算法
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
232 0