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中Session的概念
Oct 09 PHP
PHP strtok()函数的优点分析
Mar 02 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
Apr 18 PHP
php中通过Ajax如何实现异步文件上传的代码实例
May 07 PHP
PHP的可变变量名的使用方法分享
Feb 05 PHP
php中用于检测一个地理IP地址是否可用的代码
Feb 19 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
smarty内置函数section的用法
Jan 22 PHP
PHP的关于变量和日期处理的一些面试题目整理
Aug 10 PHP
php使用str_replace替换多维数组的实现方法分析
Jun 15 PHP
Laravel框架实现简单的学生信息管理平台案例
May 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
PHP 进程锁定问题分析研究
2009/11/24 PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
2014/08/28 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
2011/01/06 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
2013/02/26 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
2014/04/06 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
python单线程文件传输的实例(C/S)
2019/02/13 Python
python中多个装饰器的调用顺序详解
2019/07/16 Python
Python 中的 global 标识对变量作用域的影响
2019/08/12 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
使用python实现名片管理系统
2020/06/18 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
艺术系大学生毕业个人自我评价
2013/09/19 职场文书
工商技校毕业生自荐信
2013/11/15 职场文书
《夜晚的实验》教学反思
2014/02/19 职场文书
班级安全教育实施方案
2014/02/23 职场文书
三八节标语
2014/06/27 职场文书
学校领导班子群众路线整改措施
2014/09/16 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
2014年设计师工作总结
2014/11/25 职场文书
使用这 6个Vue加载动画库来减少我们网站的跳出率
2021/05/18 Vue.js
python必学知识之文件操作(建议收藏)
2021/05/30 Python