php发送get、post请求的6种方法简明总结
方法1: 用file_get_contents 以get方式获取内容:
1
2
3
4
5
|
方法2: 用fopen打开url, 以get方式获取内容:
1
2
3
4
5
6
7
8
9
|
<?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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?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 选项开启
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
<?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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
<?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扩展
1
2
3
4
5
6
7
8
9
10
11
|
<?php $ch = curl_init(); $timeout = 5; curl_setopt ( $ch , CURLOPT_URL, ‘http: //www.jb51.net/'); curl_setopt ( $ch , CURLOPT_RETURNTRANSFER, 1); curl_setopt ( $ch , CURLOPT_CONNECTTIMEOUT, $timeout ); $file_contents = curl_exec( $ch ); curl_close( $ch ); echo $file_contents ; ?> |
php发送get、post请求的6种方法简明总结的更多相关文章
- php发送post请求的三种方法示例
本文分享下php发送post请求的三种方法与示例代码,分别使用curl.file_get_content.fsocket来实现post提交数据,大家做个参考. php发送post请求的三种方法,分别使 ...
- php发送get、post请求的6种方法代码示例
本文主要展示了php发送get.post请求的6种方法的代码示例,分别为使用file_get_contents .fopen.fsockopen.curl来发送GET和POST请求,代码如下: 方法1 ...
- axios发送两次请求原因及解决方法
axios发送两次请求原因及解决方法 最近Vue项目中使用axios组件,在页面交互中发现axios会发送两次请求,一种请求方式为OPTIONS,另外一种为自己设置的. 如图: 什么是CORS通信? ...
- 【MySQL】锁——查看当前数据库锁请求的三种方法 20
MySQL提供了查看当前数据库锁请求的三种方法:1. show full processlist命令 观察state和info列 2. show engine innodb status\G ...
- java发送http get请求的两种方式
长话短说,废话不说 一.第一种方式,通过HttpClient方式,代码如下: public static String httpGet(String url, String charset) thro ...
- ASP.NET MVC 实现AJAX跨域请求的两种方法
通常发送AJAX请求都是在本域内完成的,也就是向本域内的某个URL发送请求,完成部分页面的刷新.但有的时候需要向其它域发送AJAX请求,完成数据的加载,例如Google. 在ASP.NET MVC 框 ...
- php发送post请求的三种方法
引用:http://blog.sjzycxx.cn/post/435/ 1.使用 file_get_contents() /** * 发送post请求 * @param string $url 请求地 ...
- php发送get、post请求的几种方法
方法1: 用file_get_contents 以get方式获取内容 <?php $url='http://www.domain.com/'; $html = file_get_contents ...
- PHP发送HTTP请求的6种方法
方法1: 用 file_get_contents 以get方式获取内容: <?php$url = 'https://wenda.shukaiming.com/';echo file_get_co ...
随机推荐
- DW Basic Knowledge2
DW的元数据是指除去数据本身之外的所有信息. 围绕DBMS方面的元数据可以描述为表定义,分区设置,索引视图定义,以及DBMS级安全方面的特权 与授权等内容. 在任何场合下,ODS要么是一个处在OLTP ...
- 动手学习TCP:数据传输
前面的文章介绍了TCP状态变迁,以及TCP状态变迁图中的一些特殊状态. 本文主要看看TCP数据传输过程中需要了解的一些重要点: MSS(Maximum Segment Size) Seq号和Ack号的 ...
- uva 699 the falling leaves——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA3QAAAMsCAIAAACTL3d2AAAgAElEQVR4nOx9y7GuPA4tKRADk/92T8 ...
- 分享一个解决MySQL写入中文乱码的方法
分享一个解决MySQL写入中文乱码的方法 之前有发帖请教过如何解决MySQL写入中文乱码的问题.但没人会,或者是会的人不想回答.搜索网上的答案并尝试很多次无效,所以当时就因为这个乱码问题搁浅了一个软件 ...
- 二分+动态规划 POJ 1973 Software Company
Software Company Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1112 Accepted: 482 D ...
- jquery中的each()方法详解
each()方法能使DOM循环结构简洁,不容易出错.each()函数封装了十分强大的遍历功能,使用也很方便,它可以遍历一维数组.多维数组.DOM, JSON 等等在javaScript开发过程中使用$ ...
- div中的内容垂直居中的五种方法
一.行高(line-height)法 如果要垂直居中的只有一行或几个文字,那它的制作最为简单,只要让文字的行高和容器的高度相同即可,比如: p { height:30px; line-height:3 ...
- HDU 4455 Substrings --递推+树状数组优化
题意: 给一串数字,给q个查询,每次查询长度为w的所有子串中不同的数字个数之和为多少. 解法:先预处理出D[i]为: 每个值的左边和它相等的值的位置和它的位置的距离,如果左边没有与他相同的,设为n+8 ...
- AC日记——产生数 codevs 1009 (弗洛伊德)(组合数学)
1009 产生数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Descriptio ...
- C# Process执行bat
Process类 System.Diagnostics 命名空间提供类,使您能够与系统进程.事件日志和性能计数器进行交互. Process类提供对本地和远程进程的访问并使您能够启动和停止本地系统进程. ...