1. <?php
  2. header("Content-Type: text/html; charset=utf-8");
  3. $longurl;
  4. if(isset($_POST['longurl'])){
  5. $longurl = $_POST['longurl'];
  6. }else{
  7. die("没有post值进来");
  8. }
  9. //echo $longurl;
  10. $id = "你的AppID";
  11. $secret = "你的AppSecret";
  12. $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$id."&secret=".$secret."";
  13. $token = getAccessToken($url);
  14. //echo $token;
  15. //你的长链接
  16. //$longurl = "http://www.baidu.com/";
  17. $data = '{"action":"long2short","long_url":"'.$longurl.'"}';
  18. $shorturl = "https://api.weixin.qq.com/cgi-bin/shorturl?access_token=".$token."";
  19. echo httpPost($shorturl,$data);
  20. //echo "你的长链接是:".$longurl;
  21. //echo "<br />";
  22. //生成的短链接
  23. //echo "生成的短链接是:".$shortArr['short_url'];
  24. //echo $shortArr;
  25. function getAccessToken($url) {
  26. // access_token 应该全局存储与更新,以下代码以写入到文件中做示例
  27. $data = json_decode(file_get_contents("access_token.json"));
  28. if ($data->expire_time < time()) {
  29. // 如果是企业号用以下URL获取access_token
  30. $output = httpGet($url);
  31. $res = (array)json_decode($output);
  32. $access_token = $res['access_token'];
  33. if ($access_token) {
  34. $data->expire_time = time() + 7000;
  35. $data->access_token = $access_token;
  36. $fp = fopen("access_token.json", "w");
  37. fwrite($fp, json_encode($data));
  38. fclose($fp);
  39. //echo 'access_token.json读写了一次';
  40. }
  41. } else {
  42. $access_token = $data->access_token;
  43. }
  44. return $access_token;
  45. }
  46. function httpGet($url) {
  47. //echo "url = ".$url;
  48. $curl = curl_init();
  49. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  50. curl_setopt($curl, CURLOPT_TIMEOUT, 500);
  51. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  52. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  53. curl_setopt($curl, CURLOPT_URL, $url);
  54. $res = curl_exec($curl);
  55. curl_close($curl);
  56. return $res;
  57. }
  58. function httpPost($url,$data){
  59. $curl = curl_init();
  60. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  61. curl_setopt($curl, CURLOPT_TIMEOUT, 500);
  62. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  63. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  64. curl_setopt($curl, CURLOPT_URL, $url);
  65. curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
  66. curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  67. $res = curl_exec($curl);
  68. curl_close($curl);
  69. return $res;
  70. }
  71. ?>

php 微信接口API之长链接转短链接代码示例的更多相关文章

  1. 微信开发第8章 通过accesstoken将长连接转换为短链接

    业务场景:开发的过程中经常会有一些很长的链接,这个时候如果生成二维码,会导致扫码的过程中识别比较慢,如果存入数据库,会导致数据库的字段长度要设定的很长才行,所以把长连接转换为短链接就越来越重要了. 接 ...

  2. 微信公众号开发C#系列-10、长链接转短链接

    1.概述 短网址的好处众多,便于记忆,占用字符少等,现在市面上出现了众多的将长网址转变为短网址的方法,但是由于他们都是小的公司在幕后运营,所以很不靠谱,面对随时关闭服务的可能,这样也导致我们将转换好了 ...

  3. java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串

    java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串 package com.zdz.test; im ...

  4. HTTP长连接与短链接

    想要充分了解HTTP长连接,需要首先知道一些基本概念: TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这 ...

  5. socket长连接和短链接区别

    短连接 连接->传输数据->关闭连接 HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束后就中断连接.短连接是指SOCKET连接后发送后接收完数据后马上断 ...

  6. URL长链接转换为短链接

    URL长链接转换为段链接的工具非常多,可是.小编还是要给大家唠一种方法的: 操作过程例如以下,打开腾讯微博或者其它微,将自己的URL地址值按图片操作:

  7. Socket编程中的长连接、短链接以及心跳包机制详解

    参考:http://blog.csdn.net/zdwzzu2006/article/details/7723738 一.定义 1.TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,se ...

  8. TCP长连接与短链接

    1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次 ...

  9. 长链接生成短链接Java源码(调用百度接口)

    public static DefaultHttpClient httpclient; static { httpclient = new DefaultHttpClient(); //httpcli ...

随机推荐

  1. Java源码之Object

    本文出自:http://blog.csdn.net/dt235201314/article/details/78318399 一丶概述 JAVA中所有的类都继承自Object类,就从Object作为源 ...

  2. git发布代码到github

    git是什么? 1.git主要是用于对版本进行管理的一个系统. 2.时刻保持数据完整性:SHA-1计算 3.文件的三种状态 已提交,已修改,已暂存 对应文件流转的三个工作区域:本地仓库,Git的工作目 ...

  3. 剑指offer 面试7题

    面试7题: 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{ ...

  4. 系统架构师考试——程序计数器 PC, 指令寄存器IR、状态寄存器SR、通用寄存器GR

    ● 计算机执行程序时,在一个指令周期的过程中,为了能够从内存中读指令操作码,首先是将__(9)___的内容送到地址总线上. (9)A.程序计数器PC    B.指令寄存器IR C.状态寄存器SR    ...

  5. Andorid:日常学习笔记(3)——掌握日志工具的使用

    Andorid:日常学习笔记(3)——掌握日志工具的使用 使用Android的日志工具Log 方法: Android中的日志工具类为Log,这个类提供了如下方法来供我们打印日志: 使用方法: Log. ...

  6. Funq之Lambda表达式入门

    今天接受了一个Tranning关于.net3.5 framework中的new feature. 其中最不明白的还是Lambda表达式.回来后又仔细的思考了一番,总算有点体会在这里写一下.既然是入门, ...

  7. 学会Retrofit+OkHttp+RxAndroid三剑客的使用,让自己紧跟Android潮流的步伐

    http://blog.csdn.net/iamzgx/article/details/51607387 概括 在上一篇博客android网络框架OkHttp之get请求(源码初识) 讲解了OkHtt ...

  8. Python编程-数据库

    1.MySQL 程序: socket客户端 根据IP和端口进行连接 发送指令: xxx 接收结果 socket服务端 运行起来 获取指令(recv) xxx 解析命令 文件夹操作: ... 文件操作: ...

  9. 线性代数:Ax=b的解

    n列的矩阵A,当且仅当向量b是列空间C(A)的一个向量时,Ax=b有解. C(A)的零空间是N(A),N(A)正交补是A的行空间C(T(A)), 依据上一章的结论,任何Rn向量可以表示为r+n,其中n ...

  10. Yii和ThinkPHP对比杂谈

    关于ThinkPHP(以下简称TP)和Yii Framework(以下简称Yii)的背景.作者和速度方面就不涉及了.因为速度是一个很复杂的问题,牵扯的因素很多.我不得不承认ThinkPHP是 一个是国 ...