118 lines
3.4 KiB
PHP
118 lines
3.4 KiB
PHP
![]() |
<?php
|
|||
|
|
|||
|
/**
|
|||
|
* User: local_xiaoma
|
|||
|
* Date: 2015/4/1
|
|||
|
* Time: 13:20
|
|||
|
* Class HttpCurl
|
|||
|
* http请求静态类
|
|||
|
*/
|
|||
|
|
|||
|
class QmHttp {
|
|||
|
|
|||
|
//连接超时
|
|||
|
public $connect_timeout;
|
|||
|
//通信超时
|
|||
|
public $read_timeout = 30;
|
|||
|
|
|||
|
public static function send($url,$postFields = null){
|
|||
|
$response = null;
|
|||
|
//如果不支持curl方式,就改用其它方式发送请求
|
|||
|
if(function_exists("curl_init")){
|
|||
|
$response = self::curl_request($url,$postFields);
|
|||
|
}else{
|
|||
|
$response = self::get_request($url,$postFields);
|
|||
|
}
|
|||
|
|
|||
|
return $response;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* curl方式请求
|
|||
|
* @param $url
|
|||
|
* @param null $postFields
|
|||
|
* @return mixed
|
|||
|
* @throws Exception
|
|||
|
*/
|
|||
|
protected static function curl_request($url,$postFields = null){
|
|||
|
$ch = curl_init();
|
|||
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|||
|
curl_setopt($ch, CURLOPT_FAILONERROR, false);
|
|||
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|||
|
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
|
|||
|
if (isset(self::$read_timeout)) {
|
|||
|
curl_setopt($ch, CURLOPT_TIMEOUT, self::readTimeout);
|
|||
|
}
|
|||
|
if (isset(self::$connect_timeout)) {
|
|||
|
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, self::connectTimeout);
|
|||
|
}
|
|||
|
//https 请求
|
|||
|
if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) {
|
|||
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
|||
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
|||
|
}
|
|||
|
|
|||
|
if (is_array($postFields) && count($postFields) > 0)
|
|||
|
{
|
|||
|
$postBodyString = "";
|
|||
|
foreach ($postFields as $k => $v)
|
|||
|
{
|
|||
|
$postBodyString .= "$k=" . urlencode($v) . "&";
|
|||
|
}
|
|||
|
unset($k, $v);
|
|||
|
curl_setopt($ch, CURLOPT_POST, true);
|
|||
|
|
|||
|
curl_setopt($ch, CURLOPT_POSTFIELDS, rtrim($postBodyString));
|
|||
|
|
|||
|
}
|
|||
|
$reponse = curl_exec($ch);
|
|||
|
|
|||
|
if (curl_errno($ch))
|
|||
|
{
|
|||
|
throw new Exception(curl_error($ch),0);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
$http_status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
|||
|
if (200 !== $http_status_code)
|
|||
|
{
|
|||
|
throw new Exception($reponse,$http_status_code);
|
|||
|
}
|
|||
|
}
|
|||
|
curl_close($ch);
|
|||
|
|
|||
|
return $reponse;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* http请求
|
|||
|
* @param $url
|
|||
|
* @param null $postFields
|
|||
|
* @return string
|
|||
|
* @throws Exception
|
|||
|
*/
|
|||
|
protected static function get_request($url,$postFields = null){
|
|||
|
try{
|
|||
|
$context = array("http"=>array("header"=>"Content-Type:application/x-www-form-urlencoded; charset=utf-8;".EOL));
|
|||
|
|
|||
|
if(isset(self::$read_timeout)){
|
|||
|
$context["http"]["timeout"] = self::$read_timeout;
|
|||
|
}
|
|||
|
|
|||
|
if (is_array($postFields) && count($postFields) > 0){
|
|||
|
$query_params = http_build_query($postFields,"","&");
|
|||
|
|
|||
|
$context["http"]["method"] = "POST";
|
|||
|
$context["http"]["content"] = $query_params;
|
|||
|
$context["http"]["header"] .= "Content-Length:".strlen($query_params).EOL;
|
|||
|
}else{
|
|||
|
$context["http"]["method"] = "GET";
|
|||
|
}
|
|||
|
|
|||
|
return file_get_contents($url, false, stream_context_create($context));
|
|||
|
}catch (Exception $e){
|
|||
|
throw $e;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|