php开发中,使用http请求再所难免。

前端有很多请求方法,比如异步的ajax,包括框架也有封装的库等等。

后端PHP这个语言也有http请求,不单单是前端来请求它。

那么php中常用的是curl这个库,来实现请求的。

我把我封装的思路说一下吧。

首先传入的参数,我定的是请求地址,请求方法,是否是https

function curls($url, $post, $https=0){}

调用的时候只需要传上面三个对应的参数就行了,甚至第三个都不用传

第二个参数是数组,也可以用来表示post/get请求,主要是用来传参数的

$curl = curl_init();curls($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);curls($curl, CURLOPT_URL, $url);curls($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; curls($curl, CURLOPT_FOLLOWLOCATION, 1);curls($curl, CURLOPT_AUTOREFERER, 1);curls($curl, CURLOPT_REFERER, "http://XXX");curls($curl, CURLOPT_ENCODING,'gzip,deflate');if ($post) { curls($curl, CURLOPT_POST, 1); curls($curl, CURLOPT_POSTFIELDS, http_build_query($post));}

大至的就是上面的代码了,但是在这里还是分享一下关于https请求的处理方法

一共分两种 首先第一种是直接绕过ssl,将以下两个参数设置为0或者false

curls($curl, CURLOPT_SSL_VERIFYPEER, false);curls($curl, CURLOPT_SSL_VERIFYHOST, false);

这个意思就是不进行验证对比。

反之,就是要进行ssl验证,代码如下

curls($curl, CURLOPT_SSL_VERIFYPEER, true);curls($curl, CURLOPT_CAINFO, 'SSL的公钥地址');curls($curl, CURLOPT_SSL_VERIFYHOST, true);

上面第二行代码需要填写.pem文件,生成的公钥文件地址,用来与https服务器上的文件对比。

除了curl,还有一种PHP内置的stream_context_create

stream_context_create,用的人比较少,一般造轮子的人会使用这种写法。

但是这只是一部分,它需要与file_get_content方法配置一起完成http请求。

$options = array('http' => array('method' => 'POST','header' => 'Content-type:Application/x-www-form-urlencoded','content' => $data//'timeout' => 60 * 60 // 超时时间(单位:s)));

比如现在有上面这个数组,是一组http请求的参数,这时候怎么模拟?

$url = "http://localhost/test.php"; //请求地址

实现

$context = stream_context_create($options);$result = file_get_contents($url, false, $context);

成功!

小提一“法”

http_build_query

想必用得少吧,除了写原生PHP代码与JAVA对接多的时候会用,一般情况下不会。

它的作用:将请求参数数组转化为url-encode编码字符串

就这么简单,看个例子

$ars = array ( 'name' => 'name', 'age' => 23//可以有很多元素) ;$res = http_build_query($ars);//输出:name=name&age=23

over!

1.《curls PHP模拟POST/GET请求,以及http_build_query用法,好陌生?》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《curls PHP模拟POST/GET请求,以及http_build_query用法,好陌生?》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/347618.html