内容简介:在实际过程中我们会有这样的场景,就是发送短信的时候,里面需要嵌入我们的网址,可是网址都是很长的。
在实际过程中我们会有这样的场景,就是发送短信的时候,里面需要嵌入我们的网址,可是网址都是很长的。
如果你一般都是在手机上操作的话,可以在微信小程序中搜索:短链接的生成
或者在文章底部扫描小程序二维码进行使用
但是短信内容,最多只能七十个字左右,多余就会出现发送两条的情况,然而这并不是我们想要的。 所以,基于这种需求我们急需将长链接转为短链接。常用的可以看到新浪微博的分享地址。下面来看,如何实现?复制代码
新浪提供了长链接转为短链接的API,可以把长链接转为 t.cn/xxx
这种格式的短链接。
百度提供了长链接转为短链接的API,可以把长链接转为 dwz
.cn/xxx
这种格式的短链接。
百度老接口将于 近期 停止服务,请使用新接口
百度老接口:https://dwz.cn/admin/create(短网址生成接口) 百度新接口:https://dwz.cn/admin/v2/create(短网址生成接口)复制代码
百度API:
<?php $host = 'https://dwz.cn'; $path = '/admin/v2/create'; $url = $host . $path; $method = 'POST'; $content_type = 'application/json'; // TODO: 设置Token $token = '你的Token'; // TODO:设置待注册长网址 $bodys = array('url'=>'你的长网址'); // 配置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); curl_close($curl); // 读取响应 var_dump($response); ?>复制代码
响应结果示例
{ "Code": 0, "ShortUrl": "https://dwz.cn/de3rp2Fl", "LongUrl": "http://www.baidu.com", "ErrMsg": "" }复制代码
响应参数说明
字段 | 类型 | 说明 |
---|---|---|
Code | int | 0:正常返回短网址 |
int | -1:短网址生成失败 | |
int | -2:长网址不合法 | |
int | -3:长网址存在安全隐患 | |
int | -4:长网址插入数据库失败 | |
int | -5:长网址在黑名单中,不允许注册 | |
ShortUrl | string | 短网址 |
LongUrl | string | 长网址(原网址) |
ErrMsg | string | 错误信息 |
新浪API:
http://api.t.sina.com.cn/short_url/shorten.json (返回结果是JSON格式) http://api.t.sina.com.cn/short_url/shorten.xml (返回结果是XML格式)复制代码
请求参数:
source 申请应用时分配的AppKey,调用接口时代表应用的唯一身份。
url_long 需要转换的长链接,需要URLencoded,最多不超过20个。
多个url参数需要使用如下方式请求: url_long=aaa&url_long=bbb
创建source方法
1.进入open.weibo.com/ ,选择菜单 微连接->网站接入。
2.点击立即接入,创建新应用,随便填写应用名称,点击创建。
3.创建成功后,AppKey就是source参数的值,可以用于请求创建短链接。
<?php namespace App\Services; class ShortUrlService { /** * 调用新浪接口将长链接转为短链接 * @param string $source 申请应用的AppKey * @param array|string $urlLong 长链接,支持多个转换(需要先执行urlencode) * @return array */ public static function getSinaShortUrl($source, $urlLong) { // 参数检查 if(empty($source) || !$urlLong){ return false; } // 参数处理,字符串转为数组 if(!is_array($urlLong)){ $urlLong = array($urlLong); } // 拼接url_long参数请求格式 $url_param = array_map(function($value){ return '&url_long='.urlencode($value); }, $urlLong); $url_param = implode('', $url_param); // 新浪生成短链接接口 $api = 'http://api.t.sina.com.cn/short_url/shorten.json'; // 请求url $request_url = sprintf($api.'?source=%s%s', $source, $url_param); $result = array(); // 执行请求 $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $request_url); $data = curl_exec($ch); if($error=curl_errno($ch)){ return false; } curl_close($ch); $result = json_decode($data, true); return $result; } } 复制代码
AppKey 以下是公用API,暂时可用。如失效,注册新浪开发者帐号即可
$source = config('app.sina');复制代码
单个链接转换
$urlLong = config('app.url'); $shortUrl = ShortUrlService::getSinaShortUrl($source, $urlLong);复制代码
返回结果
array:1 [ 0 => array:3 [ "url_short" => "http://t.cn/*******" "url_long" => "http://***********.com/#/***********" "type" => 0 ] ]复制代码
多个链接转换
$urlLong = [ 'http://www.***.com/article/1.html', 'http://www.***.com/article/2.html', 'http://www.***.com/index.html' ]; $shortUrl = ShortUrlService::getSinaShortUrl($source, $urlLong);复制代码
返回结果
array:3 [ 0 => array:3 [ "url_short" => "http://t.cn/RD12" "url_long" => "http://www.***.com/article/1.html" "type" => 0 ] 1 => array:3 [ "url_short" => "http://t.cn/RD134KV" "url_long" => "http://www.***.com/article/2.html" "type" => 0 ] 2 => array:3 [ "url_short" => "http://t.cn/RA8u231F" "url_long" => "http://www.***.com/index.html" "type" => 0 ] ]复制代码
通过上面的方法,可以很轻松的实现用 php 生成短链接网址的功能。
项目源码中含有短连接生成的api接口: github.com/WXiangQian/…
附加小程序二维码:
以上所述就是小编给大家介绍的《PHP实现百度、新浪的API接口调用生成短链接网址》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 云开发·云调用生成小程序码
- Java WebService接口生成和调用 图文详解
- Kubernetes helm API 客户端文件生成和远程调用
- 直观讲解-RPC调用和HTTP调用的区别
- 调用链系列一:解读UAVStack中的调用链技术
- 调用链系列二:解读UAVStack中的调用链技术
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。