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 FLEA中二叉树数组的遍历输出
Sep 26 PHP
PHP实现的英文名字全拼随机排号脚本
Jul 04 PHP
php内存缓存实现方法
Jan 24 PHP
PHP中捕获超时事件的方法实例
Feb 12 PHP
php使用for语句输出三角形的方法
Jun 09 PHP
[原创]php使用curl判断网页404(不存在)的方法
Jun 23 PHP
php微信支付接口开发程序
Aug 02 PHP
PHP控制前台弹出对话框的实现方法
Aug 21 PHP
php 删除一维数组中某一个值元素的操作方法
Feb 01 PHP
PHP正则匹配到2个字符串之间的内容方法
Dec 24 PHP
PHP标准库(PHP SPL)详解
Mar 16 PHP
Laravel自动生成UUID,从建表到使用详解
Oct 24 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
一个高ai的分页函数和一个url函数
2006/10/09 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
jQuery数组处理代码详解(含实例演示)
2012/02/03 Javascript
jquery控制左右箭头滚动图片列表的实例
2013/05/20 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
bootstrap-table实现服务器分页的示例 (spring 后台)
2017/09/01 Javascript
vue2.0在table中实现全选和反选的示例代码
2017/11/04 Javascript
详解Vue取消eslint语法限制
2018/08/04 Javascript
webpack dll打包重复问题优化的解决
2018/10/10 Javascript
详解vue路由
2020/08/05 Javascript
javascript canvas封装动态时钟
2020/09/30 Javascript
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
python保存网页图片到本地的方法
2018/07/24 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
2020/03/24 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
python中实现词云图的示例
2020/12/19 Python
利用python为PostgreSQL的表自动添加分区
2021/01/18 Python
CSS3教程(3):border-color网页边框色彩
2009/04/02 HTML / CSS
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
市场营销管理制度
2014/01/29 职场文书
促销活动总结报告
2014/04/26 职场文书
推荐信模板
2014/05/09 职场文书
十周年庆典策划方案
2014/06/03 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
2016三严三实专题教育活动心得体会
2016/01/06 职场文书
创业计划书之酒吧
2019/12/02 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
python之json文件转xml文件案例讲解
2021/08/07 Python
Python OpenCV超详细讲解基本功能
2022/04/02 Python
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技