作者 karlet

feat:修改post,支持json提交数据

正在显示 1 个修改的文件 包含 40 行增加27 行删除
1 <?php 1 <?php
  2 +
2 namespace Jiaoyin; 3 namespace Jiaoyin;
3 4
4 -class Curl{ 5 +class Curl
  6 +{
5 7
6 // get 获取数据 8 // get 获取数据
7 - static public function httpGet($url, $param=[], $header=[]){  
8 - if(empty($url)){ 9 + static public function httpGet($url, $param = [], $header = [])
  10 + {
  11 + if (empty($url)) {
9 return false; 12 return false;
10 } 13 }
11 - if(count($param) > 0){  
12 - $url = $url.'?'.http_build_query($param); 14 + if (count($param) > 0) {
  15 + $url = $url . '?' . http_build_query($param);
13 } 16 }
14 $ch = curl_init(); 17 $ch = curl_init();
15 - $ch = self::curlSet($ch,$url, $header); 18 + $ch = self::curlSet($ch, $url, $header);
16 $output = curl_exec($ch); 19 $output = curl_exec($ch);
17 - if($output === false){ 20 + if ($output === false) {
18 echo 'Curl error: ' . curl_error($ch); 21 echo 'Curl error: ' . curl_error($ch);
19 } 22 }
20 curl_close($ch); 23 curl_close($ch);
@@ -22,41 +25,50 @@ class Curl{ @@ -22,41 +25,50 @@ class Curl{
22 } 25 }
23 26
24 //post 获取数据 27 //post 获取数据
25 - static public function httpPost($url, $param=[], $header=[]){  
26 - if(empty($url)){ 28 + static public function httpPost($url, $param = [], $header = [])
  29 + {
  30 + if (empty($url)) {
27 return false; 31 return false;
28 } 32 }
29 $ch = curl_init(); 33 $ch = curl_init();
30 $ch = self::curlSet($ch, $url, $header); 34 $ch = self::curlSet($ch, $url, $header);
31 - $opts=[];  
32 - $opts[CURLOPT_POST]=1;  
33 - $opts[CURLOPT_USERAGENT]="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.98 Safari/537.36";  
34 - if (!empty($header) && in_array('Content-Type:application/json', $header)) {  
35 - $opts[CURLOPT_POSTFIELDS]= json_encode($param);  
36 - } else {  
37 - $opts[CURLOPT_POSTFIELDS] = http_build_query($param); 35 + $opts = [];
  36 + $opts[CURLOPT_POST] = 1;
  37 + $opts[CURLOPT_USERAGENT] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.98 Safari/537.36";
  38 +
  39 + // 修改判断逻辑
  40 + $isJson = false;
  41 + foreach ($header as $h) {
  42 + if (stripos($h, 'Content-Type: application/json') !== false) {
  43 + $isJson = true;
  44 + break;
38 } 45 }
  46 + }
  47 +
  48 + $opts[CURLOPT_POSTFIELDS] = $isJson ? json_encode($param) : http_build_query($param);
  49 +
39 curl_setopt_array($ch, $opts); 50 curl_setopt_array($ch, $opts);
40 $output = curl_exec($ch); 51 $output = curl_exec($ch);
41 - if($output === false){ 52 + if ($output === false) {
42 echo 'Curl error: ' . curl_error($ch); 53 echo 'Curl error: ' . curl_error($ch);
43 } 54 }
44 curl_close($ch); 55 curl_close($ch);
45 return $output; 56 return $output;
46 } 57 }
47 //delete 请求 58 //delete 请求
48 - static public function httpDelete($url, $param=[], $header=[]){  
49 - if(empty($url)){ 59 + static public function httpDelete($url, $param = [], $header = [])
  60 + {
  61 + if (empty($url)) {
50 return false; 62 return false;
51 } 63 }
52 - if(count($param) > 0){  
53 - $url = $url.'?'.http_build_query($param); 64 + if (count($param) > 0) {
  65 + $url = $url . '?' . http_build_query($param);
54 } 66 }
55 $ch = curl_init(); 67 $ch = curl_init();
56 $ch = self::curlSet($ch, $url, $header); 68 $ch = self::curlSet($ch, $url, $header);
57 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); 69 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
58 $output = curl_exec($ch); 70 $output = curl_exec($ch);
59 - if($output === false){ 71 + if ($output === false) {
60 echo 'Curl error: ' . curl_error($ch); 72 echo 'Curl error: ' . curl_error($ch);
61 } 73 }
62 curl_close($ch); 74 curl_close($ch);
@@ -64,15 +76,16 @@ class Curl{ @@ -64,15 +76,16 @@ class Curl{
64 } 76 }
65 77
66 //curl 参数设置 78 //curl 参数设置
67 - static private function curlSet($ch,$url, $header){  
68 - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true) ; 79 + static private function curlSet($ch, $url, $header)
  80 + {
  81 + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
69 curl_setopt($ch, CURLOPT_URL, $url); 82 curl_setopt($ch, CURLOPT_URL, $url);
70 //参数为1表示传输数据,为0表示直接输出显示。 83 //参数为1表示传输数据,为0表示直接输出显示。
71 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 84 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
72 //参数为0表示不带头文件,为1表示带头文件 85 //参数为0表示不带头文件,为1表示带头文件
73 - curl_setopt($ch, CURLOPT_HEADER,0);  
74 - if(!empty($header)){  
75 - curl_setopt($ch, CURLOPT_HTTPHEADER,$header); 86 + curl_setopt($ch, CURLOPT_HEADER, 0);
  87 + if (!empty($header)) {
  88 + curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
76 } 89 }
77 // 关闭SSL验证 90 // 关闭SSL验证
78 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 91 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);