资讯专栏INFORMATION COLUMN

PHP发送HTTP请求的几种方式

Stardustsky / 643人阅读

摘要:发送请求的方式那么这里整理一下除了使用外发送请求的方式。以一个请求为例关于的介绍文章方式使用套接字建立连接,拼接协议字符串发送数据进行请求。一个方式的例子本文介绍了发送请求的几种不同的方式。

(原文地址:https://blog.tanteng.me/2017/...

副标题:cURL库和Guzzle 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

略过

2.stream流的方式

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

以一个 POST 请求为例:


                      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 的介绍文章:https://www.oschina.net/trans...

3.socket方式

使用套接字建立连接,拼接 HTTP 协议字符串发送数据进行 HTTP 请求。

一个 GET 方式的例子:


";
} else {
    $out = "GET / HTTP/1.1
";
    $out .= "Host: www.example.com
";
    $out .= "Connection: Close

";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23293.html

相关文章

  • 总结跨域几种方式

    摘要:比如域的页面通过嵌入了一个域的页面,可以通过以下方法实现和的通信通过跨域以上几种都是双向通信的,即两个,页面与或是页面与页面之间的,下面说几种单项跨域的一般用来获取数据,因为通过标签引入的是不受同源策略的限制的。 跨域整理@(前端笔记) 跨域 只要协议、域名、端口有任何一个不同,都被当作是不同的域。由于浏览器的同源策略,其限制之一是不能通过ajax的方法情趣请求不同源的文档。第二个限制...

    diabloneo 评论0 收藏0
  • workerman / 小谈PHP几种运行模式

    摘要:话说当下一共有种运行模式,分别是和模块模式。使用,全称进程管理器进行管理。工作原理启动时载入进程管理器进程管理器自身初始化,启动多个解释器进程并等待来自的连接当客户端请求到达时,进程管理器选择并连接到一个解释器。 我们知道 workerman 程序需要在php-cli模式下运行,也就是命令行模式,这块我们有必要了解一下。 话说PHP当下一共有4种运行模式,分别是CGI、FastCGI、...

    darkbaby123 评论0 收藏0
  • php请求url几种方式

    摘要:函数打开远程文件失败使用正则匹配标题标记将标题标记中的标题字符取出退出循环,结束远程文件读取函数函数请求远程数据执行命令行命令 总结了5种方法: 前三种都是php基本的文件操作函数 curl()是php扩展需要开启,linux下需要安装 exec()执行的是linux命令行下的命令wget下载远程文件 其中wget命令在本地虚机测试请求http://www.baidu.com时,没...

    enda 评论0 收藏0
  • workerman / 学习workerman之前需要知道几种php回调写法

    摘要:在中最常用的几种回调写法如下匿名函数做为回调匿名函数,也叫闭包函数,允许临时创建一个没有指定名称的函数。最经常用作回调函数参数的值。匿名函数的回调经常将其赋给一个变量或一个对象的属性最终结果会输出。 在workerman中会经常使用,我们先写一个回调函数,当某个行为被触发后使用该函数处理相关逻辑。 在PHP中最常用的几种回调写法如下 匿名函数做为回调 匿名函数(Anonymous fu...

    Java_oldboy 评论0 收藏0
  • 对前后端通信的基本了解——如何通信、跨域?

    摘要:表单最原始的是如何通信的基本通信原理浏览器可以发出请求与接收响应,实现在页面不刷新的情况下和服务端进行数据交互。响应的状态为或者。 1、什么是浏览器的同源政策限制? 端口,域名,协议 ,只要一个不一样就跨域 2、前后端如何通信? 常见通信的几种方式 Ajax : 短连接Websocket : 长连接,双向的。CORS fetch()Form表单(最原始的) Ajax是如何通信的 ...

    SnaiLiu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<