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 相关文章推荐
搜索引擎技术核心揭密
Oct 09 PHP
PHP 抓取网页图片并且另存为的实现代码
Mar 24 PHP
PHP 日志缩略名的创建函数代码
May 26 PHP
PHP文件读写操作之文件读取方法详解
Jan 13 PHP
php仿QQ验证码的实例分析
Jul 01 PHP
ThinkPHP实现支付宝接口功能实例
Dec 02 PHP
php批量删除超链接的实现方法
Oct 19 PHP
PHP实现QQ快速登录的方法
Sep 28 PHP
thinkPHP5框架导出Excel文件简单操作示例
Aug 03 PHP
PDO::errorCode讲解
Jan 28 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
Jan 25 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 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/12/30 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
PHP实现微信红包金额拆分试玩的算法示例
2018/04/07 PHP
javascript 写类方式之一
2009/07/05 Javascript
javascript call方法使用说明
2010/01/11 Javascript
jquery解析xml字符串简单示例
2014/04/11 Javascript
JavaScript中的Function函数
2015/08/27 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
JS实现显示当前日期的实例代码
2018/07/03 Javascript
详解vue axios二次封装
2018/07/22 Javascript
使用Python生成url短链接的方法
2015/05/04 Python
浅谈Python数据类型之间的转换
2016/06/08 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
django 外键model的互相读取方法
2018/12/15 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
Django关于admin的使用技巧和知识点
2020/02/10 Python
Python如何输出警告信息
2020/07/30 Python
美国电视购物HSN官网:HSN
2016/09/07 全球购物
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
啤酒销售实习自我鉴定
2013/09/24 职场文书
网上卖盒饭创业计划书
2014/01/26 职场文书
运动会广播稿150字
2014/02/19 职场文书
大学共青团员个人自我评价
2014/04/16 职场文书
驾驶员培训方案
2014/05/01 职场文书
家长建议怎么写
2014/05/15 职场文书
拔河比赛口号
2014/06/10 职场文书
结对共建协议书
2014/08/20 职场文书
无犯罪记录证明
2014/09/19 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
解读Vue组件注册方式
2021/05/15 Vue.js
MySQL七种JOIN类型小结
2021/10/24 MySQL