php curl 发送body401时怎么获取body

7255人阅读
php curl 分离header和body信息
php中可以通过curl来模拟http请求,同时可以获取http response header和body,当然也设置参数可以只获取其中的某一个。当设置同时获取response header和body时候,它们会一同作为结果返回。这时需要我们自己来分离它们。
下面代码是模拟向google一个http GET请求
function httpGet() {
$url = '.hk';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
//表示需要response header
curl_setopt($ch, CURLOPT_NOBODY, FALSE); //表示需要response body
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
$result = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') {
return NULL;
调用上述方法后看到如下类似输出:
HTTP/1.1 200 OK
Date: Tue, 09 Jul :08 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/ charset=UTF-8
Set-Cookie: PREF=ID=75e996a7ad21f47b:FF=0:NW=1:TM=:LM=:S=TTLQQN-jwGDYnkkY; expires=Thu, 09-Jul-:08 GMT; path=/; domain=..hk
Set-Cookie: NID=67=PPu7FfFeuZqwfsrUifgzjidX4JZxxCPLe9xFHjdXhfHpzs3gaykFSH5uGXy2esWTlp_rdqIYkjFDMollzI_sA-8owxD3mDh6KCRwdMa9-g5VChj0E5XAGNjo9d-sZfLN; expires=Wed, 08-Jan-:08 GMT; path=/; domain=.. HttpOnly
P3P: CP=&This is not a P3P policy! See /support/accounts/bin/answer.py?hl=en&answer=151657 for more info.&
Server: gws
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Transfer-Encoding: chunked
&!doctype html&&html itemscope=&itemscope& itemtype=&http://schema.org/WebPage&&&head&&meta itemprop=&image& content=&/images/google_favicon_128.png&&&title&Google&/title&&script&(function(){
window.google={kEI:&VBzcUdWuHOmtiQf64IHoCw&,getEI:function(a){for(a&&(!a.getAttribute||!(b=a.getAttribute(&eid&)));
这里可以看到结果中header和body信息是在一起的,那么如何分离它们呢。方法有二种,一是通过curl自带的curl_getinfo()方法获取头的长度,然后使用substr来分割字符串。示例代码如下:
$response = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') {
$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $headerSize);
$body = substr($response, $headerSize);
第二种方法基于header和body是通过两个回车换行来分割的,所以可以通过如下代码实现:
$response = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') {
list($header, $body) = explode(&\r\n\r\n&, response, 2);
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:330063次
积分:4049
积分:4049
排名:第5969名
原创:63篇
转载:36篇
评论:69条
(1)(1)(1)(1)(1)(1)(3)(2)(1)(3)(4)(2)(3)(1)(1)(1)(5)(1)(6)(3)(2)(4)(2)(5)(2)(6)(3)(1)(2)(1)(2)(1)(1)(1)(5)(1)(1)(5)(6)(5)(2)(1)(1)(7)php获取head标签内容,提取body标签内容
时间: 20:28
来源:我爱学习网 | 作者:我爱学习网
| 本文已影响
php获取head标签内容,提取body标签内容
$tgurl='/';
$wwwtext=get_url_content($tgurl);
function get_url_content($url){
if(function_exists(&curl_init&)){
$ch = curl_init();
$timeout = 30;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$str = curl_exec($ch);
curl_close($ch);
if(ini_get('allow_url_fopen')){$str = file_get_contents($url);}
//取head标签内容
preg_match(&/&head&(.*)&\/head&/si&,$str,$match);
echo $headstr = trim($match[1]);
//取body内容
preg_match(&/&body.*?&(.*?)&\/body&/is&, $str, $match1);
echo $bodystr = trim($match1[0]);
(责任编辑:我爱学习网)
我爱学习网精心筛选编辑,将最精华的学习资料奉献给大家!
记忆力学习
教你如何高效背单词
IQ智商大挑战(FLASH)
脑龄测试题,测测你的脑龄是多少
PHP中有很多功能类似的函数,却有着细微的差别,正如本篇文章所有分析的 is_null,empty,isset 三个函数,...
php拆分字符串,支持拆分中文字符串...php curl 获取https请求的2种方法
投稿:junjie
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了php curl 获取https请求的2种方法,本文给出设定为不验证证书和host、设定一个正确的证书二种常用做法的代码实例,需要的朋友可以参考下
今天一个同事反映,使用curl发起https请求的时候报错:“SSL certificate problem, verify that the CA cert is OK. Details: error::SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed”
很明显,验证证书的时候出现了问题。
使用curl如果想发起的https请求正常的话有2种做法:
方法一、设定为不验证证书和host。
在执行curl_exec()之前。设置option
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
方法二、设定一个正确的证书。
本地ssl判别证书太旧,导致链接报错ssl证书不正确。
我们需要下载新的ssl 本地判别文件
放到 程序文件目录
curl 增加下面的配置
&& curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,true); ;
&& curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).'/cacert.pem');
(本人验证未通过。。。报错信息为:SSL certificate problem, verify that the CA cert is OK. Details: error::SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed)
如果对此感兴趣的话可以参看国外一大神文章。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具}

我要回帖

更多关于 php curl获取网页内容 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信