php发送get、post请求的几种方法

方法1: 用file_get_contents 以get方式获取内容

<?php
$url='http://www.domain.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-urlencoded\r\n" .
"Content-Length: " . strlen($data) . "\r\n",
'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 选项开启

<?phpfunction 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.1\r\n";$request .= "Host: $url[host]\r\n";$request .= "Connection: Close\r\n";if($cookie) $request.="Cookie:   $cookie\n";$request.="\r\n";fwrite($fp,$request);while(!feof($fp)) {$result .= @fgets($fp, 1024);}fclose($fp);return $result;}}//获取url的html部分,去掉headerfunction GetUrlHTML($url,$cookie=false){$rowdata = get_url($url,$cookie);if($rowdata){$body= stristr($rowdata,"\r\n\r\n");$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 referrerif($referrer=="") // if not given use this script as referrer$referrer="111";// making string from $dataforeach($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.1\n";$request.="Host: ".$URL_Info["host"]."\n";$request.="Referer: $referrer\n";$request.="Content-type: application/x-www-form-urlencoded\n";$request.="Content-length: ".strlen($data_string)."\n";$request.="Connection: close\n";$request.="Cookie:   $cookie\n";$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, 'http://www.domain.com/');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);echo $file_contents;
?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ZZ:深入理解new

new的过程当我们使用关键字new在堆上动态创建一个对象时&#xff0c;它实际上做了三件事&#xff1a;获得一块内存空间、调用构造函数、返回正确的指针。当然&#xff0c;如果我们创建的是简单类型的变量&#xff0c;那么第二步会被省略。假如我们定义了如下一个类A&#xff1a…

mysql数据库的优缺点

优点1. 通常存储过程 标题有助于提高应用程序的性能。因为当你创建他的时候就已经编译了&#xff0c;只不过是按需编译的。2.存储过程有助于减少应用程序和数据库服务器之间的流量&#xff0c;因为应用程序不必发送多个冗长的SQL语句&#xff0c;而只能发送存储过程的名称和参数…

大数据小白系列——HDFS(1)

【注1&#xff1a;结尾有大福利&#xff01;】 【注2&#xff1a;想写一个大数据小白系列&#xff0c;介绍大数据生态系统中的主要成员&#xff0c;理解其原理&#xff0c;明白其用途&#xff0c;万一有用呢&#xff0c;对不对。】 大数据是什么&#xff1f;抛开那些高大上但笼…

PHP检测远端文件是否存在

简单解释一下上面的代码。get_headers的作用就是访问一个远程地址&#xff0c;把服务器发送的HTTP头以数组形式返回。而$header[0]则是服务器返回的状态码&#xff08;如果不出意外的话状态码应该都是第一个返回的&#xff09;。 要确定一个文件在远端服务器上存在&#xff0c…

C#中使用DTS来导入数据及相关问题

向Sql 中导入Excel数据时&#xff0c;使用MS SQL的DTS功能 可以很方便的导入&#xff0c;同时引用Dll文件&#xff0c;可以在程序中对导入过程进行控制。 创建DTS包的过程如下&#xff1a; &#xff11;。在&#xff33;&#xff31;&#xff2c;企业管理器中&#xff0c;工具菜…

html select选择事件_一道搜狗面试题:IO多路复用中select、poll、epoll之间的区别...

(1)select>时间复杂度O(n)它仅仅知道了&#xff0c;有I/O事件发生了&#xff0c;却并不知道是哪那几个流(可能有一个&#xff0c;多个&#xff0c;甚至全部)&#xff0c;我们只能无差别轮询所有流&#xff0c;找出能读出数据&#xff0c;或者写入数据的流&#xff0c;对他们…

【MySQL】redo log --- 刷入磁盘过程

1、redo log基本概念 redo log的相关概念这里就不再过多阐述&#xff0c;网上有非常多的好的资料&#xff0c;可以看下缥缈大神的文章&#xff1a;https://www.cnblogs.com/cuisi/p/6525077.html&#xff0c;个人感觉介绍的非常详细。 2、数据更改过程简述 MySQL 在更新数据的时…

WPF DataGrid根据内容设置行颜色

转&#xff1a; https://code.4noobz.net/wpf-change-color-of-a-row-in-a-datagrid-depending-on-the-value/ 转载于:https://www.cnblogs.com/Mindy-hym/p/11475024.html

QQ web api

QQ的很多功能和信息可以通过web方式获得&#xff5e;以下链接&#xff0c;星号应换成你要查询的QQ号一、Activities Previewhttp://labs.qq.com/ie8/preview/?uin******二、QQ空间访问次数查询&#xff08;需权限&#xff09;http://g.qzone.qq.com/fcg-bin/cgi_emotion_list.…

delphi tclientsocket接收不到返回数据_RS—485中教你主站发送报文结构、从站返回报文结构?系列11...

作者&#xff1a;马乐1.主站发送报文结构大家可以看到我之前写的文章中的程序都是没有什么具体功能的&#xff0c;都是两个站点之间互相传递数据&#xff0c;这些数据我们只是看看是否可以正常接收发送&#xff0c;数据本身是没有任何含义的。很明显在实际使用过程中我们是不会…

MybatisPlus 通用枚举无法正确取值

正常使用mybatisplus <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0.4</version></dependency> 使用后发现项目中原先对枚举值的转换存在异常&#xff1a; ER…

零基础学习 Python 之条件语句

写在之前 我们写程序&#xff0c;就好比学生时代写作文一样&#xff0c;由 “字” 到 “词” 到 “句” 最后到 “文章” 。此前我们学会了一些词语&#xff08;对象类型&#xff09;&#xff0c;我们接下来就是学如何造句&#xff0c;而在编程语言里&#xff0c;句子被叫做语句…

python input 文件名_Python播放音频与录音

这一讲主要介绍些音频基本处理方式&#xff0c;为接下来的语音识别打基础。三种播放音频的方式使用 python 播放音频有以下几种方式&#xff1a;os.system()os.system(file) 调用系统应用来打开文件&#xff0c;file 可为图片或者音频文件。缺点&#xff1a;要打开具体的应用&a…

jQuery选择器和方法的等价关系

层级选择器 1、ancestor descendant &#xff08;后代选择器&#xff09; 在给定的祖先元素下匹配所有的后代元素 $(“form input”) $(.div span)选取<div>里的所有的<span>元素 2、parent child &#xff08;子选择器&#xff09;在给定的父元素下匹配所有…

ActionScript 3.0 Step By Step系列(四):来自面向对象开发之前的呐喊:“学会写可重用的代码”...

增强代码的可重用能力&#xff0c;从创建可重用的代码开始&#xff0c;可重用的代码则是通过从现有代码中重构加以封装,使其成为功能单一的可复用代码块。这句话笼统点说便是“封装”或“抽象”。 在实际的编程开发中&#xff0c;要实现代码重用&#xff0c;而不是每次都去Copy…

express利用nodemailer发送邮件(163邮箱)

Nodemailer 是一个简单易用的Node.js邮件发送组件 首先安装这个组件 npm install nodemailer --save安装之后&#xff0c;可以在某个get请求下&#xff0c;发送邮件&#xff0c;具体路由代码&#xff1a; const express require("express"); const nodemailer requ…

使用 Solid 私有化存储 IPFS 文件哈希值

背景 星际文件系统 IPFS&#xff08;InterPlanetary File System&#xff09;是一个面向全球的、点对点的分布式文件系统&#xff0c;目标是为了补充&#xff08;甚至是取代&#xff09;目前统治互联网的超文本传输协议&#xff08;HTTP&#xff09;&#xff0c;将所有具有相同…

使用window.postMessage实现跨域通信

JavaScript由于同源策略的限制,跨域通信一直是棘手的问题。当然解决方案也有很多&#xff1a; document.domainiframe的设置&#xff0c;应用于主域相同而子域不同&#xff1b;利用iframe和location.hash&#xff0c;数据直接暴露在了url中&#xff0c;数据容量和类型都有限Fla…

appium启动app失败_Appium-Desktop Capability 配置及启动App演示

Appium-Desktop Capability配置介绍desired capability的功能是配置Appium会话。为什么要配置capability&#xff0c;目的就是为了告诉Appium服务器您想要自动化的平台和应用程序。Desired Capabilities是一组设置的键值对的集合&#xff0c;其中键对应设置的名称&#xff0c;而…

WinRAR 命令行简体中文说明

从命令行也可以运行 WinRAR 命令&#xff0c;常规的命令行语法描述如下:WinRAR - -命令 要 WinRAR 运行的字符组合代表功能。开关 切换操作指定类型&#xff0c;压缩强度&#xff0c;压缩文件类型&#xff0c;等等的定义。压缩文件 要处理的压缩文件名。文件 要处理的文件名。列…