PHP调用百度短网址API接口

近日在帮客户实现一个在微信平台商品推广时,总是被腾讯管理员封掉域名,换了域名也是不行,所以决定做快站,第二天也被封了,我勒个去!忘记说了,客户推广的是淘宝商品居多,也难怪了。所以现在想办法实现推广的url链接转成短链,长链接随机转化为短链,每次都不一样,隐蔽域名。
百度、网易、新浪都有短网址api接口,这里使用的百度的短链接生成接口。好处是,短网址生成服务以及API调用是免费的并且不限制次数,短网址的接口采用token鉴权机制很好申请,而且是长期有效,等等吧。
接口文档:https://dwz.cn/console/apidoc

/** * @author: vfhky 20130304 20:10 * @description: PHP调用百度短网址API接口 */ $host = 'https://dwz.cn'; $path = '/admin/v2/create'; $url = $host . $path; $method = 'POST'; $content_type = 'application/json'; // 设置Token $token = '你的Token'; // 设置待注册长网址 $bodys = array('url'=>'https://www.baidu.com'); // 配置headers $headers = array('Content-Type:'.$content_type, 'Token:'.$token); // 创建连接 $curl = curl_init($url); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_FAILONERROR, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($bodys)); // 发送请求 $response = curl_exec($curl); //var_dump(curl_error($curl)); exit; curl_close($curl); $item_url1 = json_decode($response,true); $item_url = $item_url1['ShortUrl']; // 读取响应 var_dump($item_url);

封装个方法吧,好调用。封装一个静态方法的时候,想到用的是yii框架,也安装了\GuzzleHttp\Client()扩展了。
如果有用到扩展的话,在composer.json中加上
"guzzlehttp/guzzle": "~6.0"

然后在控制栏,执行composer update
/** * 百度短连接 * Class ShortUrl * @package common\components\baidu */ class ShortUrl extends BaseObject { const API_CREATE_SHORT_URL = 'https://dwz.cn/admin/v2/create'; /** * 长连接转短连接 * @param $longUrl * @return string * @throws \GuzzleHttp\Exception\GuzzleException * @throws \InvalidArgumentException */ public static function create($longUrl) { // 百度生成的token $token = '你的百度token'; $client = new \GuzzleHttp\Client(); //初始化客户端 $response = $client->request('POST',self::API_CREATE_SHORT_URL, [ 'headers' => [ // 接口类型 'Content-Type' => 'application/json', 'Token' => $token, ], 'json' => [ // post查询字符串参数组 'url' => $longUrl, ], ]); //获取响应体,对象 $response = $response->getBody(); // 获取的返回结果,转化为数组 $response = Json::decode($response->getContents(),true); if($response['Code'] != 0){ // 异常抛出 throw new Exception('百度短网址生成接口错误码:' . $response['Code']); } // 判断生成的短链接是否合法 if(Utils::checkUrl($response['ShortUrl'])){ $response = $response['ShortUrl']; } else { throw new Exception('生成的短链不合法!'); } return $response; } }

对于封装好的这个方法,在调用的时候,调用ShortUrl::create('http://www.baidu.com');
生成如下:
string(23) "https://dwz.cn/3h0urwCg"
【PHP调用百度短网址API接口】调用成功

    推荐阅读