php发送get、post请求的6种方法简明总结


Posted in PHP onJuly 08, 2014

方法1: 用file_get_contents 以get方式获取内容:

<?php
$url='https://3water.com/';
$html = file_get_contents($url);
echo $html;
?>

方法2: 用fopen打开url, 以get方式获取内容:

<?php
$fp = fopen($url, ‘r');
stream_get_meta_data($fp);
while(!feof($fp)) {
$result .= fgets($fp, 1024);
}
echo “url body: $result”;
fclose($fp);
?>

方法3:用file_get_contents函数,以post方式获取url

<?php
$data = array (‘foo' => ‘bar');
$data = http_build_query($data);

$opts = array (
‘http' => array (
‘method' => ‘POST',
‘header'=> “Content-type: application/x-www-form-urlencodedrn” .
“Content-Length: ” . strlen($data) . “rn”,
‘content' => $data
)
);

$context = stream_context_create($opts);
$html = file_get_contents(‘http://localhost/e/admin/test.html', false, $context);

echo $html;
?>

方法4:用fsockopen函数打开url,以get方式获取完整的数据,包括header和body,fsockopen需要 PHP.ini 中 allow_url_fopen 选项开启

<?php
function get_url ($url,$cookie=false)
{
$url = parse_url($url);
$query = $url[path].”?”.$url[query];
echo “Query:”.$query;
$fp = fsockopen( $url[host], $url[port]?$url[port]:80 , $errno, $errstr, 30);
if (!$fp) {
return false;
} else {
$request = “GET $query HTTP/1.1rn”;
$request .= “Host: $url[host]rn”;
$request .= “Connection: Closern”;
if($cookie) $request.=”Cookie:  $cookien”;
$request.=”rn”;
fwrite($fp,$request);
while(!@feof($fp)) {
$result .= @fgets($fp, 1024);
}
fclose($fp);
return $result;
}
}
//获取url的html部分,去掉header
function GetUrlHTML($url,$cookie=false)
{
$rowdata = get_url($url,$cookie);
if($rowdata)
{
$body= stristr($rowdata,”rnrn”);
$body=substr($body,4,strlen($body));
return $body;
}

return false;
}
?>

方法5:用fsockopen函数打开url,以POST方式获取完整的数据,包括header和body

<?php
function HTTP_Post($URL,$data,$cookie, $referrer=”")
{

// parsing the given URL
$URL_Info=parse_url($URL);

// Building referrer
if($referrer==”") // if not given use this script as referrer
$referrer=”111″;

// making string from $data
foreach($data as $key=>$value)
$values[]=”$key=”.urlencode($value);
$data_string=implode(“&”,$values);

// Find out which port is needed ? if not given use standard (=80)
if(!isset($URL_Info["port"]))
$URL_Info["port"]=80;

// building POST-request:
$request.=”POST “.$URL_Info["path"].” HTTP/1.1n”;
$request.=”Host: “.$URL_Info["host"].”n”;
$request.=”Referer: $referern”;
$request.=”Content-type: application/x-www-form-urlencodedn”;
$request.=”Content-length: “.strlen($data_string).”n”;
$request.=”Connection: closen”;

$request.=”Cookie:  $cookien”;

$request.=”n”;
$request.=$data_string.”n”;

$fp = fsockopen($URL_Info["host"],$URL_Info["port"]);
fputs($fp, $request);
while(!feof($fp)) {
$result .= fgets($fp, 1024);
}
fclose($fp);

return $result;
}

?>

方法6:使用curl库,使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展

<?php
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, ‘https://3water.com/');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);

echo $file_contents;
?>
PHP 相关文章推荐
php中神奇的fastcgi_finish_request
May 02 PHP
PHP高级对象构建 工厂模式的使用
Feb 05 PHP
ajax php传递和接收变量实现思路及代码
Dec 19 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
Jun 20 PHP
PHP分页效率终结版(推荐)
Jul 01 PHP
php将字符串转换成16进制的方法
Mar 17 PHP
php实现向javascript传递数组的方法
Jul 27 PHP
使用php实现从身份证中提取生日
May 09 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
May 17 PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 PHP
Yii 框架使用数据库(databases)的方法示例
May 19 PHP
PHP之header函数详解
Mar 02 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
Jul 08 #PHP
微信公众平台天气预报功能开发
Jul 06 #PHP
最常用的8款PHP调试工具
Jul 06 #PHP
一个不易被发现的PHP后门代码解析
Jul 05 #PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
Jul 05 #PHP
php操作redis中的hash和zset类型数据的方法和代码例子
Jul 05 #PHP
采用memcache在web集群中实现session的同步会话
Jul 05 #PHP
You might like
PHP网站备份程序代码分享
2011/06/10 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
2013/06/23 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
php实现的日历程序
2015/06/18 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
2016/08/31 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
2016/09/08 Javascript
JavaScript Uploadify文件上传实例
2017/02/28 Javascript
微信小程序异步处理详解
2017/11/10 Javascript
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
Django中几种重定向方法
2015/04/28 Python
python对html代码进行escape编码的方法
2015/05/04 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
Python函数生成器原理及使用详解
2020/03/12 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
德国BA保镖药房中文网:Bodyguard Apotheke
2021/03/09 全球购物
外贸主管求职简历的自我评价
2013/10/23 职场文书
高级工程师岗位职责
2013/12/15 职场文书
财经学院自荐信范文
2014/02/02 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
2015年计算机教师工作总结
2015/07/22 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL
Django migrate报错的解决方案
2021/05/20 Python
使用CSS连接数据库的方式
2022/02/28 HTML / CSS
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js