Source-php-request-2
2015-07-09 23:53
585 查看
php比较坑的地方就是实现同样的目的,可以使用超级多种手段。比如(file_get_contents和fopen以及现在提到的curl以及fsockopen当然还有socket)这对于一个经验少的程序员来说,确实比较难选。、
所以很多情况下,我们需要比较。搜索一下网上不负责任的资源,做一个预测。然后亲自比较权衡一下。
下面是摘抄的:
下面主要是介绍请求头的一些信息
一般的过程,我们不会用到那么复杂:
需要说明的是:curl在控制台是不能运行的,比如php xxx.php params_1,它需要服务器。
所以很多情况下,我们需要比较。搜索一下网上不负责任的资源,做一个预测。然后亲自比较权衡一下。
下面是摘抄的:
function curlRequest($url, $isPost = false, $param = array(), $cookie = null, $header = null, $referer = "", $timeout = 60) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); if (is_array($header) && !empty($header)) { //设置header $set_head = array(); foreach ($header as $k => $v) { $set_head[] = "$k:$v"; } curl_setopt($ch, CURLOPT_HTTPHEADER, $set_head); } else { curl_setopt($ch, CURLOPT_HEADER, 0); } if ($isPost === true) { curl_setopt($ch, CURLOPT_POST, $isPost); curl_setopt($ch, CURLOPT_POSTFIELDS, $param); } if (!empty($cookie)) { if (is_array($cookie)) { $cookies = implode(';', $cookie); } else { $cookies = $cookie; } curl_setopt($ch, CURLOPT_COOKIE, $cookies); } if (!empty($referer)) { curl_setopt($ch, CURLOPT_REFERER, $referer); } if( $timeout > 0 ) { curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $ret = curl_exec($ch); if (curl_errno($ch)) { $ret = ''; } curl_close($ch); return $ret; }
下面主要是介绍请求头的一些信息
<?php error_reporting(E_ALL ^ E_NOTICE); ini_set('display_errors', true); //解释如何使用HTTPHEADER,传送json格式数据 $id = $_POST['id']; $symbol = $_POST['symbol']; $companyName = $_POST['companyName']; $data = array("id" => "$id", "symbol" => "$symbol", "companyName" => "$companyName"); $data_string = json_encode($data); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)) ); ?>
一般的过程,我们不会用到那么复杂:
<?php $startTime = microtime(true); $url = "http://api.k780.com:88/?app=weather.today&weaid=1&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=xml"; for($i = 0 ; $i < 2; $i++){ $handle = curl_init($url); //$defaultHeader = array('Accept-encoding: gzip, default'); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); //curl_setopt($handle, CURLOPT_HTTPHEADER, $defaultHeader); curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($handle, CURLOPT_TIMEOUT, 10); $xml = curl_exec($handle); if($i % 10 == 0){ echo "."; } curl_close($handle); } $endTime = microtime(true); $total = $endTime - $startTime; echo $total; echo curl_error($handle); ?>
需要说明的是:curl在控制台是不能运行的,比如php xxx.php params_1,它需要服务器。
相关文章推荐
- php下目前为目最全的CURL中文说明
- PHP curl_setopt()函数实例代码与参数分析
- php采用curl访问域名返回405 method not allowed提示的解决方法
- php中file_get_content 和curl以及fopen 效率分析
- php中curl和file_get_content的区别
- PHP使用CURL实现多线程抓取网页
- 利用curl 多线程 模拟 并发的详解
- 在PHP中使用curl_init函数的说明
- 使用php方法curl抓取AJAX异步内容思路分析及代码分享
- 利用curl抓取远程页面内容的示例代码
- 开启CURL扩展,让服务器支持PHP curl函数(远程采集)
- 使用curl递归下载软件脚本分享
- PHP 获取远程网页内容的代码(fopen,curl已测)
- PHP中让curl支持sock5的代码实例
- php curl常见错误:SSL错误、bool(false)
- curl不使用文件存取cookie php使用curl获取cookie示例
- php curl模拟post请求小实例
- php下使用curl模拟用户登陆的代码
- php使用curl发送json格式数据实例
- php使用curl检测网页是否被百度收录的示例分享