封装一个curl模拟浏览器请求的函数,如下:
/**
* curl模拟浏览器请求
* @param unknown $url 请求的地址
* @param array $params 请求地址所需要的参数
* @param string $method 请求的类型
* @param array $headers http请求头
* @return string|mixed
*/
function curlRequest($url, array $params, $method='POST', array $headers=array())
{
// 1.初始化一个curl会话资源
$ch = curl_init(); // 2.设置curl会话的选项
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); // 强制使用 HTTP/1.0
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, ); // 发起连接前等待超时的时间,如果设置为0,则无限等待
curl_setopt($ch, CURLOPT_TIMEOUT, ); // 设置curl允许执行的最长秒数
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 是否将curl_exec()获取的信息返回,而不是直接输出
curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); // 设置HTTP请求头中"Accept-Encoding: "的值
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 启用时会将服务器返回的"Location: "放在header中递归的返回给服务器
curl_setopt($ch, CURLOPT_MAXREDIRS, ); // 设置HTTP重定向的最大数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 是否需要进行服务端的SSL证书验证
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 是否验证服务器SSL证书中的公用名
curl_setopt($ch, CURLOPT_HEADER, false); // 是否抓取头文件的信息
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // 设置HTTP请求头
curl_setopt($ch, CURLINFO_HEADER_OUT, true); switch (strtoupper($method)) {
case 'POST':
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
break; case 'GET':
$url = "{$url}?" . http_build_query($params);
break; case 'DELETE':
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
$url = "{$url}?" . http_build_query($params);
break; default:
return 'invalid request method';
} curl_setopt($ch, CURLOPT_URL, $url); // 设置需要请求的URL地址,也可以在 curl_init()函数中设置 // 3.执行curl会话
$response = curl_exec($ch); // 4.关闭curl会话,释放资源
curl_close($ch); return $response;
} 函数调用方式如下:
$url = 'http://demo.dev/test';
$params = array('id'=>,'name'=>'zpt');
$res = curlRequest($url,$params);
echo $res;

curl模拟请求常用参数的更多相关文章

  1. thinkphp模拟请求和参数绑定

    thinkphp模拟请求和参数绑定 一.总结 1.网页传过来的参数是可以修改的:get或者post等方式 传过来的参数是可以修改的  dump($request->get(['id'=>2 ...

  2. 通过PHP CURL模拟请求上传文件|图片。

    现在有一个需求就是在自己的服务器上传图片到其他服务器上面,过程:客户端上传图片->存放到本地服务器->再转发到第三方服务器; 由于前端Ajax受限制,只能通过服务器做转发了. 在PHP中通 ...

  3. 转载:curl 模拟请求

    一般情况下我们会在网页上请求后台接口,但是对于需要进行多次测试的人来说,每一次都要在网页上模拟请求,是存在很大局限性的.因此,我们需要学会模拟请求,以达到跟实际请求一样的效果. 1. curl的用法 ...

  4. curl 模拟请求

    https://www.jianshu.com/p/7965c56c5a2e ********************************************* 一般情况下我们会在网页上请求后 ...

  5. requeests模块请求常用参数的写法整理

    主要是针对写法 一.requests.get requests.get是调用了requests.request('get', url, params=params, **kwargs) 1.url 协 ...

  6. curl 模拟请求get/post

    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx24a0ef ...

  7. curl模拟请求

    GET请求 <?php //初始化 $curl = curl_init(); //设置抓取的url curl_setopt($curl, CURLOPT_URL, 'http://www.bai ...

  8. php中curl模拟post提交多维数组(转载)

    原文地址:http://www.cnblogs.com/mingaixin/archive/2012/11/09/2763265.html 今天需要用curl模拟post提交参数,请求同事提供的一个接 ...

  9. CURL 常用参数

    在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具. 1.查看响应头信息: -I :显示http response的头信息. [root@l ...

随机推荐

  1. mysql的一点小错误

    当使用sql语句时,字段记得使用``反向单引号,而不是单引号

  2. java0618

    1. java的基本数据类型,各占多少字节? byte 8位 short 16位 int 32位 long 64位 float 32位 double 64位 boolean 1位 char 16位 2 ...

  3. all about

    1.三次握手和四次挥手?2.什么是OSI七层结构?3.http vs https?4.what is Ping?基于什么协议?使用方法?5.DNS?6.cookie vs session?7.LDAP ...

  4. tcpdump完全指南

    先从第一个最简单的抓包指令开始 抓经过本主机上的所有网络接口的所有ARP.ICMP.IGMP.IP.TCP.UDP等所有网络包(以下简称“所有网络包”) tcpdump -i any -vnn (注: ...

  5. MySQL优化--INSERT ON DUPLICATE UPDATE死锁

    INSERT ON DUPLICATE UPDATE与死锁 在MySQL中提供两种插入更新的方式:REPLACE INTO和INSERT ON DUPLICATE UPDATE,简化了“存在则更新,不 ...

  6. 【高速接口-RapidIO】2、RapidIO串行物理层的包与控制符号

    一.RapidIO串行物理层背景介绍 上篇博文提到RapidIO的物理层支持串行物理层与并行物理层两种,由于Xilinx 部分FPGA内部已经集成了串行高速收发器,所以用FPGA实现RapidIO大多 ...

  7. PostgreSQL查看表、表索引、视图、表结构

    -- 表索引select * from pg_indexes where tablename='person_wechat_label';select * from pg_statio_all_ind ...

  8. java数据结构面试问题—快慢指针问题

    上次我们学习了环形链表的数据结构,那么接下来我们来一起看看下面的问题, 判断一个单向链表是否是环形链表? 看到这个问题,有人就提出了进行遍历链表,记住第一元素,当我们遍历后元素再次出现则是说明是环形链 ...

  9. 腾讯技术分享:GIF动图技术详解及手机QQ动态表情压缩技术实践

    本文来自腾讯前端开发工程师“ wendygogogo”的技术分享,作者自评:“在Web前端摸爬滚打的码农一枚,对技术充满热情的菜鸟,致力为手Q的建设添砖加瓦.” 1.GIF格式的历史 GIF ( Gr ...

  10. vue组件推荐

    Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司的Web前端项目开发中,多个项目采用基于Vue的UI组件框架开发,并投入正 ...