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函数代码
Apr 22 PHP
PHP游戏编程25个脚本代码
Feb 08 PHP
php获取中文拼音首字母类和函数分享
Apr 24 PHP
PHP防止表单重复提交的几种常用方法汇总
Aug 19 PHP
Laravel 5框架学习之向视图传送数据
Apr 08 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
PHP验证码生成原理和实现
Jan 24 PHP
PHP 输出缓冲控制(Output Control)详解
Aug 25 PHP
php array_pop 删除数组最后一个元素实例
Nov 02 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
PHP绕过open_basedir限制操作文件的方法
Jun 10 PHP
PHP模糊查询技术实例分析【附源码下载】
Mar 07 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
xml+php动态载入与分页
2006/10/09 PHP
一个程序下载的管理程序(一)
2006/10/09 PHP
在PHP中操作Excel实例代码
2010/04/29 PHP
php学习之流程控制实现代码
2011/06/09 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
在网页里看flash的trace数据的js类
2009/01/10 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
Javascript之BOM(window对象)详解
2016/05/25 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
JavaScript中七种流行的开源机器学习框架
2018/10/11 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
vue 地图可视化 maptalks 篇实例代码详解
2019/05/21 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
解决layui富文本编辑器图片上传无法回显的问题
2019/09/18 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
Python下载懒人图库JavaScript特效
2015/05/28 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
一夜的工作教学反思
2014/02/08 职场文书
廉洁自律承诺书
2014/03/27 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
红色经典观后感
2015/06/18 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书