最近在做项目的时候,对面提供的接口是 cookie 验证的,并有场景是拿到 api1 的cookie 去访问 api2 的信息;还没对接过类似接口,查了一下资料,这里用 curl 方法实现一下。( 当然前提是你环境需要 curl 支持 )
function curl_class( $url,$params = '',$get_cookie_file = '',$post_cookie_file = '' ) {
$UserAgent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';
// $ch = curl_init( $url ); //这里是初始化一个访问对话,并且传入url,这要个必须有
$ch = curl_init( ); //这里是初始化一个访问对话,并且传入url,这要个必须有
curl_setopt($ch, CURLOPT_USERAGENT, $UserAgent);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0 );
curl_setopt($ch, CURLOPT_HEADER,0); // 是否显示 header 头
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //将 curl_exec()获取的信息以文件流的形式返回,而不是直接输出。设置为0是直接输出
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); //设置跟踪页面的跳转,有时候你打开一个链接,在它内部又会跳到另外一个,就是这样理解
curl_setopt($ch,CURLOPT_POST,1); //开启post数据的功能,这个是为了在访问链接的同时向网页发送数据,一般数urlencode码
curl_setopt($ch,CURLOPT_POSTFIELDS,$params);
curl_setopt($ch, CURLOPT_COOKIEJAR, $get_cookie_file ); // 拿到的cookies文件,并存到本地
curl_setopt($ch, CURLOPT_COOKIEFILE, $post_cookie_file); // 访问其他页面时,发送的cookie信息文件
$content=curl_exec($ch);
curl_close( $ch );//关闭会话
return $content;
}
不一样的 cookie 值,上面方法会依次放进去,如下
获取 cookie
后面就可以拿着,已访问存储好的 cookie 访问接口了。
网友评论