DataApiConnection.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace addons\baiduwebtongji\library;
  3. /**
  4. * class DataApiConnection, provide POST method: send POST request to DataApi URL
  5. */
  6. class DataApiConnection {
  7. /**
  8. * @var string
  9. */
  10. private $url;
  11. /**
  12. * @var string
  13. */
  14. private $headers;
  15. /**
  16. * @var string
  17. */
  18. private $postData;
  19. /**
  20. * @var string
  21. */
  22. public $retHead;
  23. /**
  24. * @var string
  25. */
  26. public $retBody;
  27. /**
  28. * @var string
  29. */
  30. public $retRaw;
  31. /**
  32. * init
  33. * @param string $url
  34. * @param string $ucid
  35. */
  36. public function init($url) {
  37. $this->url = $url;
  38. $this->headers = array('UUID: '.UUID, 'Content-Type: data/json;charset=UTF-8');
  39. }
  40. /**
  41. * generate post data
  42. * @param array $data
  43. */
  44. public function genPostData($data) {
  45. $this->postData = json_encode($data);
  46. }
  47. /**
  48. * post
  49. * @param array $data
  50. */
  51. public function POST($data) {
  52. $this->genPostData($data);
  53. $curl = curl_init();
  54. curl_setopt($curl, CURLOPT_URL, $this->url);
  55. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
  56. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
  57. curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  58. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
  59. curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
  60. curl_setopt($curl, CURLOPT_HTTPHEADER, $this->headers);
  61. curl_setopt($curl, CURLOPT_POST, 1);
  62. curl_setopt($curl, CURLOPT_POSTFIELDS, $this->postData);
  63. curl_setopt($curl, CURLOPT_TIMEOUT, 30);
  64. curl_setopt($curl, CURLOPT_HEADER, 0);
  65. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  66. $tmpRet = curl_exec($curl);
  67. if (curl_errno($curl)) {
  68. return '[error] CURL ERROR: ' . curl_error($curl) . PHP_EOL;
  69. }
  70. curl_close($curl);
  71. $tmpArray = json_decode($tmpRet, true);
  72. if (isset($tmpArray['header']) && isset($tmpArray['body'])) {
  73. $this->retHead = $tmpArray['header'];
  74. $this->retBody = $tmpArray['body'];
  75. $this->retRaw = $tmpRet;
  76. }
  77. else {
  78. return "[error] SERVICE ERROR: {$tmpRet}" . PHP_EOL;
  79. }
  80. }
  81. }