EsignHttpCfgHelper.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace App\Servers\ESign\comm;
  3. /**
  4. * 网络请求配置工具类
  5. * @author 澄泓
  6. * @date 2022/08/18 14:27
  7. */
  8. class EsignHttpCfgHelper
  9. {
  10. public static $connectTimeout = 15;//15 second
  11. public static $readTimeout = 15;//15 second
  12. public static $uploadReadTimeout = 60;
  13. public static $uploadConnectTimeout = 60;
  14. public static $enableHttpProxy=false;//是否需要代理
  15. public static $httpProxyIp;//代理ip
  16. public static $httpProxyPort;//代理端口
  17. //常规请求类
  18. public static function sendHttp($reqType, $url, $headers, $param=null)
  19. {
  20. $ch = curl_init();
  21. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $reqType);
  22. if (self::$enableHttpProxy) {
  23. curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
  24. curl_setopt($ch, CURLOPT_PROXY, self::$httpProxyIp);
  25. curl_setopt($ch, CURLOPT_PROXYPORT, self::$httpProxyPort);
  26. curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
  27. }
  28. curl_setopt($ch, CURLOPT_URL, $url);
  29. curl_setopt($ch, CURLOPT_FAILONERROR, false);
  30. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  31. $postData = is_array($param) ? json_encode($param, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) : $param;
  32. curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
  33. if (self::$readTimeout) {
  34. curl_setopt($ch, CURLOPT_TIMEOUT, self::$readTimeout);
  35. }
  36. if (self::$connectTimeout) {
  37. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, self::$connectTimeout);
  38. }
  39. //https request
  40. if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") {
  41. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  42. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  43. }
  44. if (is_array($headers) && 0 < count($headers)) {
  45. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  46. }
  47. $curlRes = curl_exec($ch);
  48. $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  49. curl_close($ch);
  50. return new EsignResponse($httpCode,$curlRes);
  51. }
  52. /**
  53. * 上传文件
  54. * @param $uploadUrls
  55. * @param $contentMd5
  56. * @param $fileContent
  57. * @param $ContenType
  58. * @return EsignResponse
  59. */
  60. public static function upLoadFileHttp($uploadUrls, $contentMd5, $fileContent,$ContenType){
  61. $header = array(
  62. 'Content-Type:'.$ContenType,
  63. 'Content-Md5:' . $contentMd5
  64. );
  65. $curl_handle = curl_init();
  66. curl_setopt($curl_handle, CURLOPT_URL, $uploadUrls);
  67. curl_setopt($curl_handle, CURLOPT_FILETIME, true);
  68. curl_setopt($curl_handle, CURLOPT_FRESH_CONNECT, false);
  69. // curl_setopt($curl_handle, CURLOPT_HEADER, true); // 输出HTTP头 true
  70. curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
  71. if (self::$uploadReadTimeout) {
  72. curl_setopt($curl_handle, CURLOPT_TIMEOUT, self::$uploadReadTimeout);
  73. }
  74. if (self::$uploadConnectTimeout) {
  75. curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, self::$uploadConnectTimeout);
  76. }
  77. curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false);
  78. curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, false);
  79. curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $header);
  80. curl_setopt($curl_handle, CURLOPT_CUSTOMREQUEST, 'PUT');
  81. curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $fileContent);
  82. if (is_array($header) && 0 < count($header)) {
  83. curl_setopt($curl_handle, CURLOPT_HTTPHEADER, $header);
  84. }
  85. $curlRes = curl_exec($curl_handle);
  86. $httpCode = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE);
  87. curl_close($curl_handle);
  88. return new EsignResponse($httpCode,$curlRes);
  89. }
  90. }