PHP Http v3.0.0_00

来源:互联网 发布:javascript用有关var 编辑:程序博客网 时间:2024/05/22 03:03

* 基于PHP curl 

* version 3.0.0_00,支持POST数据,支持SSL,支持上传文件。


使用方法。该类没有字段,有6个方法(加构造函数是7个):

__construct;

addPostData;

addFileUploaded;

setReferer;

setCookieFile;

enableDebugMode;

setHeader;

execute;


最简单的:

$client = new Client('http://www.baidu.com/');echo $client->execute();

ssl的跟上面的完全相同:

$client = new Client('https://account.xiaomi.com/');echo $client->execute();

发送POST数据:

addPostData('username', '张三');

文件上传:

addFileUploaded('upfile', 'd:/myfile.zip');

调试模式:

enableDebugMode('d:/log.txt');

会把执行过程中的所有信息,包括非错误信息,记录到log.txt文件中。

其它几个方法也很简单,就不说了。

下面的代码看上去很乱,其实不乱,尽管复制使用即可。也可以到这里下载。

<?php class Client { protected $curl; protected $postData = NULL; public function __construct($url) { $this->curl = curl_init(); if (mb_detect_encoding($url) != 'UTF-8') { $url = mb_convert_encoding($url, 'UTF-8'); } curl_setopt($this->curl, CURLOPT_URL, htmlspecialchars_decode($url)); curl_setopt($this->curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; BOIE9;ZHCN)'); $cookieFile = PHP_OS == 'WINNT' ? dirname(__FILE__) . '/' . 'Client.cookie' . '.txt' : dirname(__FILE__) . '/' . 'Client.cookie'; curl_setopt($this->curl, CURLOPT_COOKIEJAR, $cookieFile); curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($this->curl, CURLOPT_TIMEOUT_MS, 1000 * 30); curl_setopt($this->curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($this->curl, CURLOPT_SSL_VERIFYHOST, FALSE); } public function addPostData($fieldName, $value) { $this->postData["$fieldName"] = $value; } public function addFileUploaded($fieldName, $file) { $this->postData["$fieldName"] = '@' . realpath($file) . ';type=application/octet-stream'; } public function setReferer($Referer) { curl_setopt($this->curl, CURLOPT_REFERER, $Referer); } public function setCookieFile($cookieFile) { curl_setopt($this->curl, CURLOPT_COOKIEFILE, realpath($cookieFile)); curl_setopt($this->curl, CURLOPT_COOKIEJAR, realpath($cookieFile)); } public function enableDebugMode($logFile = 'php://stderr') { curl_setopt($this->curl, CURLOPT_VERBOSE, TRUE); if ($logFile == 'php://stderr') { return; } $fp = fopen($logFile, 'a+'); fwrite($fp, PHP_EOL . PHP_EOL); curl_setopt($this->curl, CURLOPT_STDERR, $fp); } protected function enableHeader($headerDataArray) { curl_setopt($this->curl, CURLOPT_HEADER, TRUE); curl_setopt($this->curl, CURLOPT_HTTPHEADER, $headerDataArray); } public function execute($return = TRUE) { if ($this->postData !== NULL) { curl_setopt($this->curl, CURLOPT_POST, TRUE); curl_setopt($this->curl, CURLOPT_POSTFIELDS, $this->postData); } if ($return) { curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, TRUE); return curl_exec($this->curl); } else { curl_exec($this->curl); } } public function __destruct() { curl_close($this->curl); } } ?>



原创粉丝点击