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生成excel时单元格内换行问题的解决方法
Aug 26 PHP
有关PHP中MVC的开发经验分享
May 17 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
Jun 27 PHP
浅析51个PHP处理字符串的函数
Aug 02 PHP
php在线解压ZIP文件的方法
Dec 30 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
Oct 08 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
Feb 23 PHP
PHP中仿制 ecshop验证码实例
Jan 06 PHP
PHP基于面向对象实现的留言本功能实例
Apr 04 PHP
PHP使用file_get_contents发送http请求功能简单示例
Apr 29 PHP
php微信开发之谷歌测距
Jun 14 PHP
PHP抽象类和接口用法实例详解
Jul 20 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 ImageMagick windows下安装教程
2015/01/26 PHP
twig里使用js变量的方法
2016/02/05 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
2016/06/30 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
java解析json方法总结
2019/05/16 PHP
jquery的颜色选择插件实例代码
2008/10/02 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
Ionic3 UI组件之autocomplete详解
2017/06/08 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
vue下history模式刷新后404错误解决方法
2018/08/18 Javascript
详解Vue前端生产环境发布配置实战篇
2019/05/07 Javascript
Python中Collection的使用小技巧
2014/08/18 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
python实现list元素按关键字相加减的方法示例
2017/06/09 Python
用Python逐行分析文件方法
2019/01/28 Python
django框架创建应用操作示例
2019/09/26 Python
PyQt5实现画布小程序
2020/05/30 Python
python import 上级目录的导入
2020/11/03 Python
CSS3的一个简单导航栏实现
2015/08/03 HTML / CSS
香港卓悦化妆品官网:BONJOUR
2017/09/21 全球购物
澳大利亚优惠网站:Deals.com.au
2019/07/02 全球购物
10条PHP编程习惯
2014/05/26 面试题
毕业生在校学习的自我评价分享
2013/10/08 职场文书
实习生评语
2014/04/26 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
交通运输局四风问题对照检查材料思想汇报
2014/10/09 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
幼师辞职信范文
2015/02/27 职场文书
高二数学教学反思
2016/02/18 职场文书
Go语言实现一个简单的并发聊天室的项目实战
2022/03/18 Golang
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android