source code:
- /**
- * 执行一个 HTTP 请求
- *
- * @param string $url 执行请求的URL
- * @param mixed $params 表单参数
- * 可以是array, 也可以是经过url编码之后的string
- * @param mixed $cookie cookie参数
- * 可以是array, 也可以是经过拼接的string
- * @param string $method 请求方法 post / get
- * @param string $protocol http协议类型 http / https
- * @return array 结果数组
- */
- static public function makeRequest($url, $params, $cookie, $method='post', $protocol='http')
- {
- $query_string = self::makeQueryString($params);
- $cookie_string = self::makeCookieString($cookie);
- $ch = curl_init();
- if ('get' == $method)
- {
- curl_setopt($ch, CURLOPT_URL, "$url?$query_string");
- }
- if ($protocol == 'https'){
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
- }
- else
- {
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_POST, true);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string);
- }
- curl_setopt($ch, CURLOPT_HEADER, false);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3);
- // curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
- // disable 100-continue
- curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
- if (!emptyempty($cookie_string))
- {
- curl_setopt($ch, CURLOPT_COOKIE, $cookie_string);
- }
- if ('https' == $protocol)
- {
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
- }
- $ret = curl_exec($ch);
- $err = curl_error($ch);
- if (false === $ret || !emptyempty($err))
- {
- $errno = curl_errno($ch);
- $info = curl_getinfo($ch);
- curl_close($ch);
- return array(
- 'result' => false,
- 'errno' => $errno,
- 'msg' => $err,
- 'info' => $info,
- );
- }
- curl_close($ch);
- return array(
- 'result' => true,
- 'msg' => $ret,
- );
- }
转载于:https://blog.51cto.com/superfly81/1118910