浅谈PHP发送HTTP请求的几种方式

PHP 开发中我们常用 cURL 方式封装 HTTP 请求,什么是 cURL?

cURL 是一个用来传输数据的工具,支持多种协议,如在 Linux 下用 curl 命令行可以发送各种 HTTP 请求。PHP 的 cURL 是一个底层的库,它能根据不同协议跟各种服务器通讯,HTTP 协议是其中一种。

现代化的 PHP 开发框架中经常会用到一个包,叫做 GuzzleHttp,它是一个 HTTP 客户端,也可以用来发送各种 HTTP 请求,那么它的实现原理是什么,与 cURL 有何不同呢?

Does Guzzle require cURL?

No. Guzzle can use any HTTP handler to send requests. This means that Guzzle can be used with cURL, PHP's stream wrapper, sockets, and non-blocking libraries like React. You just need to configure an HTTP handler to use a different method of sending requests.

这是 GuzzleHttp 文档 FAQ 中的一个 Question,可见 GuzzleHttp 并不依赖 cURL 库,而支持多种发送 HTTP 请求的方式。

PHP 发送 HTTP 请求的方式

那么这里整理一下除了使用 cURL 外 PHP 发送 HTTP 请求的方式。

1.cURL

详细方法:http://www.jb51.net/article/56492.htm

2.stream流的方式

stream_context_create 作用:创建并返回一个文本数据流并应用各种选项,可用于 fopen(), file_get_contents() 等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程。

以一个 POST 请求为例:

PHP

<?php /** * Created by PhpStorm. * User: tanteng * Date: 2017/7/22 * Time: 13:48 */ function post($url, $data) { $postdata = http_build_query( $data ); $opts = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata ) ); $context = stream_context_create($opts); $result = file_get_contents($url, false, $context); return $result; }

关于 PHP stream 的介绍文章:http://www.jb51.net/article/68891.htm

3.socket方式

使用套接字建立连接,拼接 HTTP 报文发送数据进行 HTTP 请求。

一个 GET 方式的例子:

PHP

<?php $fp = fsockopen("www.example.com", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { $out = "GET / HTTP/1.1\r\n"; $out .= "Host: www.example.com\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp); } ?>

本文介绍了发送 HTTP 请求的几种不同的方式。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-08-03 10:15:57

浅谈PHP发送HTTP请求的几种方式的相关文章

浅谈RxJava处理业务异常的几种方式

本文介绍了RxJava处理业务异常的几种方式,分享给大家.具体如下: 关于异常 Java的异常可以分为两种:运行时异常和检查性异常. 运行时异常: RuntimeException类及其子类都被称为运行时异常,这种异常的特点是Java编译器不去检查它,也就是说,当程序中可能出现这类异常时,即使没有用try...catch语句捕获它,也没有用throws字句声明抛出它,还是会编译通过. 检查性异常: 除了RuntimeException及其子类以外,其他的Exception类及其子类都属于检查性异

发送HTTP请求的两种方式

请求 写了两个测试了一下,自己看看吧 public void GetResponse()        {            StringBuilder strSource = new StringBuilder();            try            {                //WebRequest Wreq = WebRequest.Create("http://www.dev-club.com");                //WebResp

php发送post请求的三种方法

 这篇文章主要介绍了php发送post请求的三种方法,分别使用curl.file_get_content.fsocket来实现post提交数据,需要的朋友可以参考下  代码如下: class Request{       public static function post($url, $post_data = '', $timeout = 5){//curl           $ch = curl_init();           curl_setopt ($ch, CURLOPT_UR

php发送post请求的三种方法_php实例

方法一: /** * 发送post请求 * @param string $url 请求地址 * @param array $post_data post键值对数据 * @return string */ function send_post($url, $post_data) {   $postdata = http_build_query($post_data);   $options = array(     'http' => array(       'method' => 'POST

浅谈网络推广目前常用的三种方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 网络推广让我们的宣传更为迅速,更为简便,更易让顾客找到,我们在推广中所付出的努力也会更容易的得到回报,就这些方面的综合考虑,我们首先就是要把我们的网站或者产品,以最快的速度传达到消费者的眼前,了解消费者的心里需求,正所谓急顾客之所急,想顾客之所想,那么为了实现这些理想,我们有哪些方法可以操作呢?下面A5站长网SEO诊断团队(http://se

Webx系列之Ajax请求的四种方式

在我们做Web开发中,用到Ajax的地方可谓是随处可见.在Webx的官方文档中,对于Ajax没有明确的支持说明,但是我们可以用另外的两种请求方式来变相实现这种效果.一种是.do请求,一种是.json请求,另一种还是json请求,一种是.htm请求.下面我们来对这四种请求方式做个说明. .do请求 对于.do请求官方的说明是不需要有返回页面的请求,注意了:不需要返回页面的请求,和我们的需求有点相似啊.因为Ajax请求也是不要返回页面,只需要把数据输出到 浏览器端就行了.OK,下面我们用一个城市二级

浅谈网络最基础的几个赚钱方式

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 首先声明,老鸟就没有必要看我这篇文章了都是谈一些最基本的话题,些这篇文章的目的是突然回想起自己初进入互联网之际在这个圈子里没有朋友没有熟人常常会在百度上搜"网络赚钱方法","网络真的能赚钱吗?"等等之类的词,希望这篇文章能给那些还在站长圈外而又想进入互联网的朋友们带来一点点的帮助,对站长这个行业有一个最

虚子雨:浅谈2011最给力的3个推广方式

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 大家好,到目前为止,我在SEO圈子里面已经混了一年多了,虽然自己的推广水平不行,还有很多需要提高的地方,在这一年时间里,学到了很多的知识,也有了自己的一些案例,但是总觉得不足,自己的推广上很多时候感觉到力不从心,虽然这样,但是不代表自己没有发现一些非常不错的推广技巧,只是这些技巧对于现在的我来说还不很适用,所以一直束之高阁,今天虚子雨特意把这

浅谈新手站长网赚的几个方式

中介交易 SEO诊断 淘宝客 云主机 技术大厅 进入个人站长这个行业摸爬滚打已经一年多时间了.最初是从兴趣爱好出发,后来慢慢地学着去盈利.在A5等站长网站学习了很多站长的经验心得,同时也不断地加以实践.总结了一下几个简单但比较有效的网赚方式. 一.外链买卖 外 链买卖主要投放在alivv和A5论坛,两者比较可靠,同时人气比较活跃,容易成交.网站只要有一定的PR或比较靠前的ALEXA排名,都可以低价卖一些 出去的.1元/条,估计一个月可以做到20条左右.本人的一个新站这个月已经卖到30条多了.这个