关于 & 符号的坑。
原因
因业务需要,需要统计发送的短信中关于链接部分的点击信息。由于公司的域名较长,需要转换一下长地址,因此选择了新浪短地址 API 服务 。
在使用的过程中,发现了一个小问题:
我定义的url
是 https://www.abcdefghi.com/event/detail/1488?app=2&uid=131
,但是请求完了新浪的 API
后,我的地址发生了变化,为:https://www.abcdefghi.com/event/detail/1488?app=2
。实在没有搞明白,在保证代码不错的情况下,进行了排查。
看文档
出现问题第一步找文档是我开发的必要原则。
根据文档的提示,对应的代码基本没有问题,细心的我在「请求参数」部分发现了一句话:需要转换的长链接,需要URLencoded。然后我就将URL
进行urlencode
,即:
1 | $curlUrl = urlencode('https://www.abcdefghi.com/event/detail/1488?app=2&uid=131'); |
得到的结果就是:
1 | https%3A%2F%2Fwww.abcdefghi.com%2Fevent%2Fdetail%2F1488%3Fapp%3D2%26uid%3D131 |
然后发起请求后的结果是:
1 | { |
有点失望了。。但是绝不放弃。
再尝试
我发现 API 将 &
后面的部分处理了,那我如果将其进行urlencode
呢,也就是urlencode('&')
。说做就做,试试呗。
最后请求成功且转换成功。