• 欢迎来到本博客,希望可以y一起学习与分享

PHP模拟http发送请求三种方式(curl,stream,socket)

PHP benz 3年前 (2018-09-19) 92次浏览 0个评论 扫描二维码
文章目录[隐藏]

一、cURL

CURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 CURL 库。使用PHP的CURL 库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,CURL 是一个功能强大的PHP库。

PHP建立CURL请求的基本步骤

①:初始化

curl_init()

②:设置属性

curl_setopt().有一长串CURL 参数可供设置,它们能指定URL请求的各个细节。

③:执行并获取结果

curl_exec()

④:释放句柄

curl_close()

CURL实现GET和POST

①:GET方式实现

②:POST方式实现

③:如果获得的数据时json格式的,使用json_decode函数解释成数组。

$output_array = json_decode($data,true); //如果第二个参数为true,就转为数组的形式。如果不填就为对象的形式

如果使用json_decode($data)解析的话,将会得到object类型的数据。

踩坑

问:php curl请求一直false,但是postman请求正常?

答:坑死啦,请求地址是https的,需要设置curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);参数(来源:https://segmentfault.com/q/1010000009380586)
答:使用curl来请求数据时curl的url地址中的任何地方不能有空格存在,不然会返回一个你琢磨不透的false (来源:https://blog.csdn.net/marswill/article/details/71123253)

二、stream

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

以一个 POST 请求为例:

关于 PHP stream 的介绍文章:https://www.oschina.net/translate/understanding-streams-in-php

三、socket 方式

使用套接字建立连接,拼接 HTTP 报文发送数据进行 HTTP 请求。
一个 GET 方式的例子:


文章 PHP模拟http发送请求三种方式(curl,stream,socket) 转载需要注明出处
喜欢 (0)

您必须 登录 才能发表评论!