在平时的php项目中,经常需要用到接口的调用,我们一般对接口调用是否成功,首先基本上全是判断接口API返回信息中的headers信息返回的状态码是不是200,如果是200那么再对返回来的数据进行处理,对于状态码的获取我们可以在获取数据的同时也获取状态码的值,以前写过文章介绍过怎么远程获取信息php7-远程获取api接口或网页内容,只是没详细的介绍在获取的返回数据的数组中,数组0就是返回的网页状态码,一般在项目中获取网页状态码是我们最常用到的。
function http_request_json($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//https的URL需要用到
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//https的URL需要用到
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result[1] = curl_exec($ch);
$result[0]= curl_getinfo($ch,CURLINFO_HTTP_CODE);
curl_close($ch);
return $result;
}
如果想获得更多的headers参数,curl_getinfo函数只需填写第一个参数便可以,这样这个函数就会返回一个数组来。
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://www.rsyncd.net/" );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result[1] = curl_exec($ch);
$result[0]= curl_getinfo($ch); //只保留一个参数。
curl_close($ch);
$str=$result[0];
print_r($str);
- 打印结果
Array
(
[url] => https://www.rsyncd.net/
[content_type] => text/html; charset=UTF-8
[http_code] => 200
[header_size] => 277
[request_size] => 52
[filetime] => -1
[ssl_verify_result] => 20
[redirect_count] => 0
[total_time] => 0.686
[namelookup_time] => 0.249
[connect_time] => 0.265
[pretransfer_time] => 0.327
[size_upload] => 0
[size_download] => 43431
[speed_download] => 63310
[speed_upload] => 0
[download_content_length] => -1
[upload_content_length] => -1
[starttransfer_time] => 0.655
[redirect_time] => 0
[redirect_url] =>
[primary_ip] => 116.255.196.196
[certinfo] => Array
(
)
[primary_port] => 443
[local_ip] => 192.168.2.171
[local_port] => 50466
)
上面的数组打印出一堆数据,如果需要获取那个值,直接获取就可以了,比如想通过headers头信息获取服务器的IP,直接获取数组中的primary_ip值便可以。
//获取服务器端IP地址
echo $str['primary_ip']; //打印结果:116.255.196.196
细心的码友可能发现了,上面这个函数返回来了一堆数据,好像是没有我们需要的Server和X-Powered-By的这二个值,那么这二个值怎么获取呢,看下面的函数,能帮我们直接获取这二个值。
$url = "https://www.rsyncd.net/";
print_r(get_headers($url, 1));
- 打印结果
Array
(
[0] => HTTP/1.1 200 OK
[Server] => nginx
[Date] => Thu, 14 Feb 2019 08:02:26 GMT
[Content-Type] => text/html; charset=UTF-8
[Connection] => close
[Vary] => Accept-Encoding
[X-Powered-By] => PHP/7.3.1
[Link] => <https://www.rsyncd.net/wp-json/>; rel="https://api.w.org/"
)
返回的也是一个数组,想获取那个值,直接获取就可以,说了这么多,实际在运用过程中,大家需要灵活动用,如果只是在获取内容时,确认返回的状态码是不是200时,那用上面的curl_getinfo函数就可以了,因为上面的curl函数在获取网页内容时已经获取到网页状态码了,无需再进行第二次获取了,如果要获取网页的服务器信息,那就用下面的get_headers函数。
最新评论
感谢
能不能屏蔽掉刷流量的,统计工具显示全部都是
路过学习了
好像不太行啊 加载不出来啊
好文章
是否可以 实现 判断手机端跳转 而网址不变呢
你好
感谢分享,我也遇到这个了,根据你的提示,屏蔽掉了