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

前端之家收集整理的这篇文章主要介绍了浅谈PHP发送HTTP请求的几种方式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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


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


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


@H_4030@

Does Guzzle require cURL?


@H
403_0@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.


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


@H_403_0@

PHP 发送 HTTP 请求的方式


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


@H_4030@

1.cURL


@H
403_0@详细方法:<a target="_blank" href="//www.jb51.cc/article/56492.htm">//www.jb51.cc/article/56492.htm

2.stream流的方式

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

以一个 POST 请求为例:

PHP

$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 的介绍文章:

@H_403_0@

3.socket方式

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

@H_403_0@

一个 GET 方式的例子:

@H_403_0@PHP

PHP;"> PHP $fp = fsockopen("www.example.com",80,$errno,$errstr,30); if (!$fp) { echo "$errstr ($errno)
\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); } ?>
@H_403_0@本文介绍了发送 HTTP 请求的几种不同的方式。

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

原文链接:https://www.f2er.com/php/17088.html

猜你在找的PHP相关文章