/**
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_; }}
8993

被折叠的 条评论
为什么被折叠?



