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 相关文章推荐
第二节 对象模型 [2]
Oct 09 PHP
推荐php模板技术[转]
Jan 04 PHP
php面向对象 字段的声明与使用
Jun 14 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
Aug 31 PHP
php定时计划任务的实现方法详解
Jun 06 PHP
php创建session的方法实例详解
Jan 27 PHP
thinkPHP学习笔记之安装配置篇
Mar 05 PHP
总结PHP删除字符串最后一个字符的三种方法
Aug 30 PHP
ZendFramework2连接数据库操作实例
Apr 18 PHP
PHP实现上传多图即时显示与即时删除的方法
May 09 PHP
php判断文件上传图片格式的实例详解
Sep 30 PHP
php 中htmlentities导致中文无法查询问题
Sep 10 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
破解.net程序(dll文件)编译和反编译方法
2013/01/31 PHP
php生成随机颜色方法汇总
2014/12/03 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
FormValidate 表单验证功能代码更新并提供下载
2008/08/23 Javascript
JS与C#编码解码
2013/12/03 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
使用Angular-CLI构建NPM包的方法
2018/09/07 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
[01:20]DOTA2更新全新英雄 天涯墨客现已加入游戏
2018/08/25 DOTA
[08:08]DOTA2-DPC中国联赛2月28日Recap集锦
2021/03/11 DOTA
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
python os.fork() 循环输出方法
2019/08/08 Python
django自带调试服务器的使用详解
2019/08/29 Python
python numpy存取文件的方式
2020/04/01 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
在线购买世界上最好的酒:BoozeBud
2018/06/07 全球购物
英国在线购买马术服装:EQUUS
2019/07/12 全球购物
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
linux面试题参考答案(7)
2012/10/29 面试题
企业演讲稿范文
2013/12/28 职场文书
跑操口号
2014/06/12 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
2015年保送生自荐信
2015/03/24 职场文书
php7中停止php-fpm服务的方法详解
2021/05/09 PHP
如何基于python实现单目三维重建详解
2022/06/25 Python