CURL
在PHP的世界里面,如果想创建一个HTTP请求,CURL则是其中的一种选择。
请求例子:
$url = 'www.baidu.com';
$parameter = array();
$partnerKey = '765bdc6ead9a1bbd2697e9b04f1b9147';
$customerHeader = array(
'CutomerHeader:haha'
);
$op = curl_init($url);
curl_setopt($op, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $customerHeader);
curl_setopt($op, CURLOPT_RETURNTRANSFER, true);
curl_setopt($op, CURLOPT_POST, true);
curl_setopt($op, CURLOPT_POSTFIELDS, $parameter);
curl_setopt($op, CURLOPT_TIMEOUT, 60);
$result = curl_exec($op);
curl_close($op);
这个例子主要是对 www.baidu.com 发起了一次post请求 。返回的结果的是一个HTML,内容为
<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>pr-nginx_1-0-284_BRANCH Branch
Time : Mon Aug 15 09:26:31 CST 2016</center>
</body>
</html>
哈,我们不用在意这些细节,主要注意力放在 curl_init(), curl_setopt(), curl_exec(),curl_close()四个基本的函数即可。
特别留意一下curl_setopt里面的参数是一个字符串数组,别写成key value 数组,不然很难发现。
具体的参数可以查看 PHP手册 里面的内容。
当我们出现错误的的时候,可以用curl_errno()来判断有无错误内容,然后再用curl_error() 来获取错误信息咯。
本人遇到了一个奇怪的错误:Could not resolve proxy: XXX
,后来上stackoverflow查找答案,终于找到了解释。
大概意思是机器配置了默认的http_proxy在环境变量里面。解决方法有两种,一种是直接在PHP代码里面写明curl_setopt($op, CURLOPT_PROXY, '');
设置不使用代理。另外一种是修改环境变量。
经查明,机器确实配置了环境变量,我将环境变量删除之后,重启了机器,终于得到了正常的运行结果。