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 array_intersect比array_diff快(附详细的使用说明)
Jul 03 PHP
php内核解析:PHP中的哈希表
Jan 30 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
Nov 24 PHP
thinkphp实现发送邮件密码找回功能实例
Dec 01 PHP
php启用sphinx全文搜索的实现方法
Dec 24 PHP
PHP模拟asp中response类实现方法
Aug 08 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
Dec 21 PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
phpstorm 配置xdebug的示例代码
Mar 31 PHP
Yii 框架入口脚本示例分析
May 19 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
Feb 26 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获取网页内容方法总结
2008/12/04 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
php7 新增功能实例总结
2020/05/25 PHP
javascript 面向对象编程基础:封装
2009/08/21 Javascript
jQuery 常见学习网站与参考书
2009/11/09 Javascript
Zero Clipboard js+swf实现的复制功能使用方法
2010/03/07 Javascript
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
JavaScript如何从listbox里同时删除多个项目
2013/10/12 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
2015/10/13 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
2019/12/07 Javascript
浅谈Python中的数据类型
2015/05/05 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
python中numpy.empty()函数实例讲解
2021/02/05 Python
推荐10个HTML5响应式框架
2016/02/25 HTML / CSS
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
AJAX的优缺点都有什么
2015/08/18 面试题
求职自荐信
2013/12/14 职场文书
完美主义个人的自我评价
2014/02/17 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
婚前协议书怎么写
2014/04/15 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
祖国在我心中演讲稿200字
2014/08/28 职场文书
2014年实验室工作总结
2014/12/03 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书
Java方法重载和方法重写的区别到底在哪?
2021/06/11 Java/Android