160 lines
5.6 KiB
PHP
160 lines
5.6 KiB
PHP
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: john
|
|
* Date: 2016/2/17
|
|
* Time: 11:37
|
|
*/
|
|
|
|
namespace App\Utils;
|
|
|
|
use Illuminate\Support\Facades\Config;
|
|
|
|
class RPC
|
|
{
|
|
public static function apihttp($url, $method='GET', $data=null, $return_type = 'json')//array
|
|
{
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_HEADER, 0);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
|
curl_setopt($ch, CURLOPT_TIMEOUT, 2);
|
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
|
|
if($method != 'GET' && $data != null) {
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
|
|
}
|
|
$info = curl_exec($ch);
|
|
curl_close($ch);
|
|
|
|
$jsonInfo = @json_decode($info, true);
|
|
if(empty($jsonInfo)) {
|
|
\Log::alert($info);
|
|
}
|
|
if($return_type == 'array'){
|
|
return $jsonInfo;
|
|
}else{
|
|
return $info;
|
|
}
|
|
}
|
|
public static function curl_request($url,$post='',$cookie='', $returnCookie=0){
|
|
$curl = curl_init();
|
|
curl_setopt($curl, CURLOPT_URL, $url);
|
|
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');
|
|
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
|
|
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
|
|
curl_setopt($curl, CURLOPT_REFERER, "http://XXX");
|
|
if($post) {
|
|
curl_setopt($curl, CURLOPT_POST, 1);
|
|
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
|
|
}
|
|
if($cookie) {
|
|
curl_setopt($curl, CURLOPT_COOKIE, $cookie);
|
|
}
|
|
curl_setopt($curl, CURLOPT_HEADER, $returnCookie);
|
|
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
|
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
|
$data = curl_exec($curl);
|
|
if (curl_errno($curl)) {
|
|
return curl_error($curl);
|
|
}
|
|
curl_close($curl);
|
|
if($returnCookie){
|
|
list($header, $body) = explode("\r\n\r\n", $data, 2);
|
|
preg_match_all("/Set\-Cookie:([^;]*);/", $header, $matches);
|
|
$info['cookie'] = substr($matches[1][0], 1);
|
|
$info['content'] = $body;
|
|
return $info;
|
|
}else{
|
|
return $data;
|
|
}
|
|
}
|
|
public static function http_post($url, $data) {
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_URL,$url);
|
|
curl_setopt($ch, CURLOPT_HEADER,0);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
|
curl_setopt($ch, CURLOPT_POST, 1);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
|
|
$res = curl_exec($ch);
|
|
curl_close($ch);
|
|
return $res;
|
|
}
|
|
/**
|
|
* @param $url 请求网址
|
|
* @param bool $params 请求参数
|
|
* @param int $ispost 请求方式
|
|
* @param int $https https协议
|
|
* @return bool|mixed
|
|
*/
|
|
public static function curl($url, $params = false, $ispost = 0, $https = 0)
|
|
{
|
|
$httpInfo = array();
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
|
|
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');
|
|
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
|
|
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
if ($https) {
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
|
|
}
|
|
if ($ispost) {
|
|
curl_setopt($ch, CURLOPT_POST, true);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
} else {
|
|
if ($params) {
|
|
if (is_array($params)) {
|
|
$params = http_build_query($params);
|
|
}
|
|
curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
|
|
} else {
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
}
|
|
}
|
|
|
|
$response = curl_exec($ch);
|
|
|
|
if ($response === FALSE) {
|
|
//echo "cURL Error: " . curl_error($ch);
|
|
return false;
|
|
}
|
|
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
|
$httpInfo = array_merge($httpInfo, curl_getinfo($ch));
|
|
curl_close($ch);
|
|
return $response;
|
|
}
|
|
/**
|
|
* PHP发送Json对象数据
|
|
* @param $url 请求url
|
|
* @param $data 发送的json字符串/数组
|
|
* @return array
|
|
*/
|
|
public static function json_post($url, $data = NULL)
|
|
{
|
|
|
|
// $ch = curl_init();
|
|
// curl_setopt($ch, CURLOPT_POST, 1);
|
|
// curl_setopt($ch, CURLOPT_URL, $url);
|
|
// curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//用post方法传送参数
|
|
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
|
// curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
|
// 'Content-Type: application/json; charset=utf-8',
|
|
// 'Content-Length: ' . strlen($data)
|
|
// )
|
|
// );
|
|
// $response = curl_exec($ch);
|
|
// curl_close($ch);
|
|
// var_dump($response);
|
|
$curl = curl_init($url);
|
|
curl_setopt($curl, CURLOPT_HEADER, false);
|
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json"));
|
|
curl_setopt($curl, CURLOPT_POST, true);
|
|
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
|
|
$response = curl_exec($curl);
|
|
curl_close($curl);
|
|
return @json_decode($response, true);;
|
|
}
|
|
} |