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 相关文章推荐
文件上传类
Oct 09 PHP
使用 php4 加速 web 传输
Oct 09 PHP
php中判断文件存在是用file_exists还是is_file的整理
Sep 12 PHP
php excel reader读取excel内容存入数据库实现代码
Dec 06 PHP
使用Apache的htaccess防止图片被盗链的解决方法
Apr 27 PHP
PHP高级编程实例:编写守护进程
Sep 02 PHP
php将html转成wml的WAP标记语言实例
Jul 08 PHP
PHP实现的一致性哈希算法完整实例
Nov 14 PHP
深入解析PHP中foreach语句控制数组循环的用法
Nov 30 PHP
PHP使用file_get_content设置头信息的方法
Feb 14 PHP
YII Framework框架教程之安全方案详解
Mar 14 PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 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/09/25 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
jQuery :first选择器使用介绍
2013/08/09 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
图解js图片轮播效果
2015/12/20 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
微信小程序中hidden不生效原因的解决办法
2017/04/26 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
python高手之路python处理excel文件(方法汇总)
2016/01/07 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
pip安装python库的方法总结
2019/08/02 Python
python异常触发及自定义异常类解析
2019/08/06 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
使用python turtle画高达
2020/01/19 Python
详解查看Python解释器路径的两种方式
2020/10/15 Python
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
输入N,打印N*N矩阵
2012/02/20 面试题
《小猪家的桃花树》教学反思
2014/04/11 职场文书
学习方法演讲稿
2014/05/10 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
担保书范文
2019/07/09 职场文书
Java处理延时任务的常用几种解决方案
2022/06/01 Java/Android