curl

/** Get提交获取数据
  * @desc 获取access_token
  * @return String access_token
  */ 
function getAccessToken(){ 
     $AppId = '1232assad13213123'
     $AppSecret = '2312312321adss3123213'
     $getUrl = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $AppId . '&secret=' . $AppSecret
         $ch = curl_init(); 
     curl_setopt( $ch , CURLOPT_URL, $getUrl ); 
     curl_setopt( $ch , CURLOPT_HEADER, 0); 
     curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt( $ch , CURL_SSLVERSION_SSL, 2); 
     curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt( $ch , CURLOPT_SSL_VERIFYHOST, FALSE); 
     $data = curl_exec( $ch ); 
     $response = json_decode( $data ); 
     return $response ->access_token; 
}
 
/** Post提交获取数据
  * @desc 实现天气内容回复
  */ 
public function testWeixin(){ 
     $access_token = $this ->getAccessToken(); 
     $customMessageSendUrl = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=' . $access_token ;
     $description = '今天天气的详细信息(从第三方获取)。' ;
     $url = 'http://weather.com/' ;
     $picurl = 'http://weather.com/' ;
     $postDataArr = array (
         'touser' => 'OPENID' ,
         'msgtype' => 'news' ,
         'news' => array (
             'articles' => array (
                 'title' => '当天天气' ,
                 'description' => $description ,
                 'url' => $url ,
                 'picurl' => $picurl ,
                 ),
             ),
         ); 
     $postJosnData = json_encode( $postDataArr ); 
     $ch = curl_init( $customMessageSendUrl );
     curl_setopt( $ch , CURLOPT_HEADER, 0);
     curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1);
     curl_setopt( $ch , CURLOPT_POST, 1);
     curl_setopt( $ch , CURLOPT_POSTFIELDS, $postJosnData );   
     curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt( $ch , CURLOPT_SSL_VERIFYHOST, FALSE); 
     $data = curl_exec( $ch );
     var_dump( $data ); 
}



/**
  * @description: 封装CURL扩展
  * @date: 2014-07-28 16:04
  */
 
/**
  * @编码规范
  * @class 类名首字母大写,类名为多个单词, 每个大字首字母大写 eg: class Curl , class CurlPage
  * @variable 变量名小写, 变量名为多个单词, 每个单词小写,使用下划线_分割 eg: $curl_result
  * @function 函数名与类名规则相同 eg: function SendRequest
  * @params 函数形参规则与变量名相同
  * @class-variable 成员变量,以下划线结尾,多个单词使用下划线分隔. eg: private $host_name_
  */
/**
  * @要求
  *
  */
class Curl{
 
     /**
      * @请求的host
      */
     private $host_ ;
 
     /**
      * @curl 句柄
      */
     private $ch_ ;
 
     /**
      * @超时限制时间
      */
     const time_=5;
     /**
      * @请求的设置
      */
     private $options_ ;
 
     /**
      * @保存请求头信息
      */
     private $request_header_ ;
 
     /**
      * @保存响应头信息
      */
     private $response_header_ ;
 
     /**
      * @body_ 用于保存curl请求返回的结果
      */
     private $body_ ;
 
     /**
      * @读取cookie
      */
     private $cookie_file_ ;
 
     /**
      * @写入cookie
      */
     private $cookie_jar_ ;
 
     /**
      * @todo proxy
      * @构造函数,初始化CURL回话
      */
     public function Start( $url ){
         $this ->ch_ = curl_init( $url );
         curl_setopt( $this ->ch_, CURLOPT_HEADER, 1);
         curl_setopt( $this ->ch_, CURLOPT_RETURNTRANSFER , 1 );
     }
 
     /**
      * @返回响应头
      */
     public function ResponseHeader( $url ){
         if (!function_exists( 'http_parse_headers' )) {
             function http_parse_headers ( $raw_headers ){
                 $headers = array ();
                 foreach ( explode ( "\n" , $raw_headers ) as $i => $h ) {
                     $h = explode ( ':' , $h , 2);
                     if (isset( $h [1])) {
                         if (!isset( $headers [ $h [0]])) {
                             $headers [ $h [0]] = trim( $h [1]);
                         } else if ( is_array ( $headers [ $h [0]])) {
                             $tmp = array_merge ( $headers [ $h [0]], array (trim( $h [1])));
                             $headers [ $h [0]] = $tmp ;
                         } else {
                             $tmp = array_merge ( array ( $headers [ $h [0]]), array (trim( $h [1])));
                             $headers [ $h [0]] = $tmp ;
                         }
                     }
                 }
                 return $headers ;
             }
         }
         $this ->Start( $url );
         curl_setopt( $this ->ch_, CURLOPT_TIMEOUT, Curl::time_);
         $this ->body_= $this ->Execx();
         $header_size = curl_getinfo( $this ->ch_, CURLINFO_HEADER_SIZE);
         $this ->response_header_ = substr ( $this ->body_, $start = 0, $offset = $header_size );
         $this ->response_header_ = http_parse_headers( $this ->response_header_);
         print_r( $this ->response_header_);
         return $this ->Close( $this ->body_);
     }
     /**
      * @读取cookie
      */
     public function LoadCookie( $url , $cookie_file ){
         $this ->Start( $url );
         curl_setopt( $this ->ch_, CURLOPT_COOKIE, 1);
         curl_setopt( $this ->ch_, CURLOPT_COOKIEFILE , $cookie_file );
         $this ->body_= $this ->Execx();
         return $this ->Close( $this ->body_);
     }
 
     /**
      * @写入cookie
      */
     public function SaveCookie( $url ){
         $this ->Start( $url );
         curl_setopt( $this ->ch_, CURLOPT_COOKIE, 1);
         curl_setopt( $this ->ch_, CURLOPT_COOKIEFILE , 'cookie.txt' );
         curl_setopt( $this ->ch_, CURLOPT_COOKIEJAR , 'cookie.txt' );
         $this ->body_= $this ->Execx();
         return $this ->Close( $this ->body_);
     }
 
     /**
      * @设置HEADER
      */
 
     public function SetHeader( $headers = null){
         if ( is_array ( $headers ) && count ( $headers ) > 0) {
             curl_setopt( $this ->ch_, CURLOPT_HTTPHEADER, $headers );
         }
     }
 
     /**
      * @GET请求
      */
     public function Get( $url , array $params = array ()) {
         if ( $params ) {
             if ( strpos ( $url , '?' )) {
                 $url .= "&" .http_build_query( $params );
             }
             else {
                 $url .= "?" .http_build_query( $params );
             }
         }
         $this ->Start( $url );
         curl_setopt( $this ->ch_, CURLOPT_TIMEOUT, Curl::time_);
         if ( strpos ( $url , 'https' ) === 0) {
             curl_setopt( $this ->ch_, CURLOPT_SSL_VERIFYHOST, 0);
             curl_setopt( $this ->ch_, CURLOPT_SSL_VERIFYPEER, 0);
         }
         $this ->body_= $this ->Execx();
         return $this ->Close( $this ->body_);
     }
 
     /**
      * @POST请求
      */
     public function Post( $url , array $params = array ()) {
         $this ->Start( $url );
         curl_setopt( $this ->ch_, CURLOPT_SSL_VERIFYPEER, 0);
         curl_setopt( $this ->ch_, CURLOPT_HTTPHEADER, array ( "Content-Type: application/x-www-form-urlencoded" ));
         curl_setopt( $this ->ch_, CURLOPT_POST, true);
         curl_setopt( $this ->ch_, CURLOPT_TIMEOUT, Curl::time_);
         if ( $params ) {
             curl_setopt( $this ->ch_, CURLOPT_POSTFIELDS, http_build_query( $params ));
         }
         $this ->body_= $this ->Execx();
         return $this ->Close( $this ->body_);
     }
 
     /**
      * @tips: google http head 方法
      */
     public function Head( $url , array $params = array ()) {
         $this ->Start( $url );
         curl_setopt( $this ->ch_, CURLOPT_TIMEOUT, Curl::time_);
         curl_setopt( $this ->ch_, CURLOPT_RETURNTRANSFER , 0);
         curl_setOpt( $this ->ch_,CURLOPT_NOBODY, true);
         $this ->body_= $this ->Execx();
         return $this ->Close( $this ->body_);
     }
 
     /**
      * @执行CURL会话
      */
     public function Execx(){
         return curl_exec( $this ->ch_);
     }
 
     /**
      * @关闭CURL句柄
      */
     public function Close( $body_ ){
         if ( $body_ === false) {
             echo "CURL Error: " . curl_error( $body_ );
             return false;
         }
         curl_close( $this ->ch_);
         return $body_ ;
     }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值