新浪短地址 API 踩坑记

关于 & 符号的坑。

原因

因业务需要,需要统计发送的短信中关于链接部分的点击信息。由于公司的域名较长,需要转换一下长地址,因此选择了新浪短地址 API 服务

在使用的过程中,发现了一个小问题:

我定义的urlhttps://www.abcdefghi.com/event/detail/1488?app=2&uid=131,但是请求完了新浪的 API 后,我的地址发生了变化,为:https://www.abcdefghi.com/event/detail/1488?app=2。实在没有搞明白,在保证代码不错的情况下,进行了排查。

看文档

出现问题第一步找文档是我开发的必要原则。
short_url/shorten

根据文档的提示,对应的代码基本没有问题,细心的我在「请求参数」部分发现了一句话:需要转换的长链接,需要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
2
3
4
5
6
7
8
9
{
"code":true,
"msg":"请求成功!",
"result":{
"error":"Error: Link Forbidden!",
"error_code":21506,
"request":"/2/sinaurl/public/shorten.json"
}
}

有点失望了。。但是绝不放弃。

再尝试

我发现 API 将 &后面的部分处理了,那我如果将其进行urlencode呢,也就是urlencode('&')。说做就做,试试呗。

最后请求成功且转换成功。

一分支持,也是鼓励!
0%