2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 利用新浪API实现短网址生成 长网址缩短!

利用新浪API实现短网址生成 长网址缩短!

时间:2024-04-17 20:59:11

相关推荐

利用新浪API实现短网址生成 长网址缩短!

新浪提供了长链接转为短链接的API,可以把长链接转为/xxx这种格式的短链接。

API有两种格式:

http://api./short_url/shorten.json (返回结果是JSON格式)http://api./short_url/shorten.xml (返回结果是XML格式)

请求参数:

source 申请应用时分配的AppKey,调用接口时代表应用的唯一身份。url_long 需要转换的长链接,需要URLencoded,最多不超过20个。

多个url参数需要使用如下方式请求:url_long=aaa&url_long=bbb

创建source方法

1.进入/ ,选择菜单 微连接->网站接入。2.点击立即接入,创建新应用,填写应用名称,点击创建。3.创建成功后,AppKey就是source参数的值,可以用于请求创建短链接。

这里是测试代码:

<?php$api = 'http://api./short_url/shorten.json'; // json// $api = 'http://api./short_url/shorten.xml'; // xml$source = '您申请的AppKey';$url_long = '/item.htm?spm=a21wu.241046-us.9629632455.7.193eb6cbbC9gFg&id=585958323801';$request_url = sprintf($api.'?source=%s&url_long=%s', $source, $url_long);$data = file_get_contents($request_url);echo $data;?>

返回JSON格式

[{"url_short": "http:\/\/\/Rki0twp","url_long": "http:\/\//item.htm?spm=a21wu.241046-us.9629632455.7.193eb6cbbC9gFg&id=585958323801","type": 0}]

返回XML格式

<?xml version="1.0" encoding="UTF-8"?><urls><url><url_short> /Rki0twp</url_short><url_long>/item.htm?spm=a21wu.241046-us.9629632455.7.193eb6cbbC9gFg&id=585958323801</url_long><type>0</type></url></urls>

生成的短链接为/Rki0twp,访问会跳转到/item.htm?spm=a21wu.241046-us.9629632455.7.193eb6cbbC9gFg&id=585958323801

完整的类如下:

/** 生成新浪的短链接或还原新浪短链接*/class ShortUrl{//新浪APPKEYconst APPKEY='xxxxxxxx'; //你申请的appkey//CURLprivate static function CURLQueryString($url){//设置附加HTTP头$addHead=array("Content-type: application/json");//初始化curl$curl_obj=curl_init();//设置网址curl_setopt($curl_obj,CURLOPT_URL,$url);//附加Head内容curl_setopt($curl_obj,CURLOPT_HTTPHEADER,$addHead);//是否输出返回头信息curl_setopt($curl_obj,CURLOPT_HEADER,0);//将curl_exec的结果返回curl_setopt($curl_obj,CURLOPT_RETURNTRANSFER,1);//设置超时时间curl_setopt($curl_obj,CURLOPT_TIMEOUT,8);//执行$result=curl_exec($curl_obj);//关闭curl回话curl_close($curl_obj);return $result;}//处理返回结果private static function doWithResult($result,$field){$result=json_decode($result,true);return isset($result[0][$field])?$result[0][$field]:'';}//获取短链接public static function getShort($url){$url='http://api./short_url/shorten.json?source='.self::APPKEY.'&url_long='.$url;$result=self::CURLQueryString($url);return self::doWithResult($result,'url_short');}//获取长链接public static function getLong($url){$url='http://api./short_url/expand.json?source='.self::APPKEY.'&url_short='.$url;$result=self::CURLQueryString($url);return self::doWithResult($result,'url_long');}}

也可以用以下完整的方法

<?php/*** 调用新浪接口将长链接转为短链接* @param string $source 申请应用的AppKey* @param array|string $url_long 长链接,支持多个转换(需要先执行urlencode)* @return array*/function getSinaShortUrl($source, $url_long){// 参数检查if(empty($source) || !$url_long){return false;}// 参数处理,字符串转为数组if(!is_array($url_long)){$url_long = array($url_long);}// 拼接url_long参数请求格式$url_param = array_map(function($value){return '&url_long='.urlencode($value);}, $url_long);$url_param = implode('', $url_param);// 新浪生成短链接接口$api = 'http://api./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$source = 'xxxxxxxssssss';// 单个链接转换$url_long = '/item.htm?spm=a21wu.241046-us.9629632455.7.193eb6cbbC9gFg&id=585958323801';$data = getSinaShortUrl($source, $url_long);print_r($data);// 多个链接转换$url_longs = array('/item.htm?spm=a21wu.241046-us.9629632455.7.193eb6cbbC9gFg&id=585958323801','/item.htm?spm=a21wu.241046-us.9629632455.7.193eb6cbbC9gFg&id=585958323802','/item.htm?spm=a21wu.241046-us.9629632455.7.193eb6cbbC9gFg&id=585958323803','/item.htm?spm=a21wu.241046-us.9629632455.7.193eb6cbbC9gFg&id=585958323804','/item.htm?spm=a21wu.241046-us.9629632455.7.193eb6cbbC9gFg&id=585958323805',);$data_arr = getSinaShortUrl($source, $url_longs);print_r($data_arr);?>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。