예제 #1
0
	/**
	 * http 请求
	 * @param string $url
	 * @param array $params
	 * @param string $data
	 * @return string
	 */
	private static function _http($url, $params = array(), $data = null)
	{
		$curl = curl_init();
		if(empty($data)){
			$body = '';
			if(!empty($params)) {
				if (is_array($params)) {
					$body = http_build_query($params);
				}
			}
		}else{
			$url = $url . (strpos($url, '?') ? '&' : '?') . (is_array($params) ? http_build_query($params) : $params);
			$body = $data;
		}
		curl_setopt($curl, CURLOPT_URL, $url);
		curl_setopt($curl, CURLOPT_TIMEOUT, 3);
		curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, self::$_TIME_OUT);
		curl_setopt($curl, CURLOPT_POST, 1);
		curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
		$urlArr = parse_url($url);
		$port = empty($urlArr['port']) ? 80 : $urlArr['port'];
		curl_setopt($curl, CURLOPT_PORT, $port);
		curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:'));
		//获取的信息以文件流的形式返回,不直接输出
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
		$response = curl_exec($curl);
		self::$_HTTP_CODE = curl_getinfo($curl, CURLINFO_HTTP_CODE);
		self::$_HTTP_INFO = curl_getinfo($curl);
		self::$_HTTP_ERROR_CODE = curl_errno($curl);
		self::$_HTTP_ERROR = curl_error($curl);
		curl_close($curl);
		self::$_HTTP_RESPONSE = $response;
		return $response;
	}