CurlUtil.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace app\utils;
  3. class CurlUtil{
  4. /**
  5. * 模拟http get请求
  6. * @param $url
  7. * @param array $params
  8. * @param array $header
  9. * @param int $timeout
  10. * @return bool|string
  11. * @throws \Exception
  12. */
  13. public static function get($url, $params=array(), $header = array(),$timeout=30){
  14. $opts = array(
  15. CURLOPT_TIMEOUT => $timeout,
  16. CURLOPT_RETURNTRANSFER => 1,
  17. CURLOPT_SSL_VERIFYPEER => false,
  18. CURLOPT_SSL_VERIFYHOST => false,
  19. CURLOPT_HTTPHEADER => $header,
  20. CURLOPT_URL => count($params) > 0 ? $url . '?' . http_build_query($params) : $url,
  21. );
  22. $ch = curl_init();
  23. curl_setopt_array($ch, $opts);
  24. $data = curl_exec($ch);
  25. $error = curl_error($ch);
  26. curl_close($ch);
  27. if ($error)
  28. throw new \Exception('http get error:' . $error);
  29. return $data;
  30. }
  31. /**
  32. * 模拟http post请求
  33. * @param $url
  34. * @param $params
  35. * @param array $header
  36. * @param int $timeout
  37. * @return bool|string
  38. * @throws \Exception
  39. */
  40. public static function post($url, $params, $header = array(), $timeout=30){
  41. $opts = array(
  42. CURLOPT_TIMEOUT => $timeout,
  43. CURLOPT_RETURNTRANSFER => 1,
  44. CURLOPT_SSL_VERIFYPEER => false,
  45. CURLOPT_SSL_VERIFYHOST => false,
  46. CURLOPT_HTTPHEADER => $header,
  47. CURLOPT_URL => $url,
  48. CURLOPT_POST => 1,
  49. CURLOPT_POSTFIELDS => is_array($params) ? http_build_query($params) : $params
  50. );
  51. $ch = curl_init();
  52. curl_setopt_array($ch, $opts);
  53. $data = curl_exec($ch);
  54. $error = curl_error($ch);
  55. curl_close($ch);
  56. if ($error)
  57. throw new \Exception('http post error:' . $error);
  58. return $data;
  59. }
  60. /**
  61. * 模拟http post json请求
  62. * @param string $url
  63. * @param array $params
  64. * @param array $header
  65. * @param int $timeout
  66. * @return bool|string
  67. * @throws \Exception
  68. */
  69. public static function postJson(string $url, array $params, array $header = [], int $timeout=30){
  70. $opts = [
  71. CURLOPT_TIMEOUT => $timeout,
  72. CURLOPT_RETURNTRANSFER => 1,
  73. CURLOPT_SSL_VERIFYPEER => false,
  74. CURLOPT_SSL_VERIFYHOST => false,
  75. CURLOPT_HTTPHEADER => array_merge(["content-type:application/json"],$header),
  76. CURLOPT_URL => $url,
  77. CURLOPT_POST => 1,
  78. CURLOPT_POSTFIELDS => json_encode($params)
  79. ];
  80. $ch = curl_init();
  81. curl_setopt_array($ch, $opts);
  82. $data = curl_exec($ch);
  83. $error = curl_error($ch);
  84. curl_close($ch);
  85. if ($error)
  86. throw new \Exception('http post error:' . $error);
  87. return json_decode($data,true);
  88. }
  89. }