在php开发过程中需要对外请求调用某些接口,使用curl能够与外部接口使用各种类型的协议进行连接和通讯。
与对方服务器建立一个会话的过程如下:
①初始化
$ch = curl_init(); //初始化一个会话
②设置对方地址(URL)
$url = "http://www.xx.com";
curl_setopt($ch, CURLOPT_URL, $url); //curl_setopt() 设置一个cURL传输选项 , CURLOPT_URL表示需要获取的URL地址
③提交方式 get?post?put?
curl_setopt($ch, CURLOPT_POST, 1);//post表单
或者
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
//接下来是提交数据
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
④启用时会将头文件的信息作为数据流输出。
curl_setopt($ch, CURLOPT_HEADER, 0);
⑤是直接输出还是以文件流的形式返回
CURLOPT_RETURNTRANSFER | 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
补充说明:curl_setopt()中的第二个参数有很多可选参数,不同参数有不同作用。
⑥执行
直接输出:curl_exec($ch);
文件流:$result = curl_exec($ch);
⑦终止回话
curl_close($ch);
⑧其他
-----curl模仿手机
curl_setopt($ch, CURLOPT_USERAGENT, "Dalvik/1.6.0 (Linux; U; Android 4.1.2; DROID RAZR HD Build/9.8.1Q-62_VQW_MR-2)");
curl_setopt($ch, CURLOPT_REFERER, "-");
------curl伪造ip
$header = array(
'CLIENT-IP:58.68.44.61',
'X-FORWARDED-FOR:58.68.44.61',
);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);