- A+
所属分类:PHP
偶然发现学校的教务系统能用统一认证系统账号登录(吐槽一下,我还一直以为教务系统只能用独立的密码登录),刚好最近写了个统一登录的 php 类,便想着能不能通过代码登录教务系统,并通过 api 查询信息。
前面一切顺利,也获取到了 ticket,但是通过 curl 携带 ticket 去访问回调页面,没有任何返回。
没有返回就算了,连报错信息也没有输出。
于是使用 curl_getinfo 输出了一下信息
说来奇怪,这个地方 http code 是 0,网上查询了一下也没能找到解决办法
后面又用了 file\_get\_contents 去直接获取,返回 404
这里说明一下,这个回调页面 404 是 ticket 过期/无效/已使用时才出现
但是我把链接复制到浏览器又是能正常登录的
而后尝试更改代码逻辑、修改 curl 部分代码,还是不行
尝试 power shell 中使用 wget/curl 也是能正常访问的,便怀疑是 php 的 curl 问题了(恕我经验不足)
于是使用 GuzzleHttp 代替,运行后我终于找到了问题所在!
这是之前的输出:
这是 Guzzle 的报错:
原来是 ticket 后多了个 %0D ,搜索得知这是换行符的问题
代码中替换掉即可
使用 ticket 登录教务系统后,获取到 cookie 携带 cookie 访问接口即可查询到信息(图中为空教室信息)
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫