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