Set JSON decode mode
public static jsonOpts ( boolean $assoc = false, integer $depth = 512, integer $options ) : array | ||
$assoc | boolean | When TRUE, returned objects will be converted into associative arrays. |
$depth | integer | User specified recursion depth. |
$options | integer | Bitmask of JSON decode options. Currently only JSON_BIGINT_AS_STRING is supported (default is to cast large integers as floats) |
return | array |
/** * * @param array $param * data * url * method = 'GET' * headers = [] * @return array */ public function makeRequest($param) { // Yii::info('makeRequest() ' . print_r($param, true)); $aData = ['response' => null, 'statuscode' => 0]; if (!isset($param['url'])) { return $aData; } $defaultParam = ['method' => 'GET', 'data' => [], 'headers' => []]; foreach ($defaultParam as $k => $v) { if (!isset($param[$k])) { $param[$k] = $v; } } // $client = new Client(['timeout' => 20]); $method = strtolower($param['method']); Yii::info('makeRequest(' . $param['method'] . ', ' . $param['url'] . ')' . "\ndata = " . print_r($param['data'], true) . "\nheaders = " . print_r($param['headers'], true)); try { $aDop = []; if (count($param['data']) > 0) { $sName = 'form_params'; if ($method != 'post') { $sName = 'query'; } $aDop[$sName] = $param['data']; } if (count($param['headers']) > 0) { $aDop['headers'] = $param['headers']; } // Yii::info('makeRequest() aDop = ' . print_r($aDop, true)); // $res = $client->request( // $param['method'], // $param['url'], // $aDop // ); $parsed_url = parse_url($param['url']); $parsed_query = []; if (isset($parsed_url['query'])) { parse_str($parsed_url['query'], $parsed_query); } if ($method != 'post') { $parsed_query = array_merge($parsed_query, isset($aDop['query']) ? $aDop['query'] : []); if (isset($aDop['query'])) { unset($aDop['query']); } } $sQuery = http_build_query($parsed_query); $url = $parsed_url['scheme'] . '://' . $parsed_url['host'] . $parsed_url['path'] . ($sQuery != '' ? '?' . $sQuery : ''); // Yii::info('makeRequest() url = ' . print_r($url, true)); // Yii::info($method.': ' // . $url // . "\n" // . (isset($aDop['headers']) ? (print_r($aDop['headers'], true) . "\n") : '') // . (isset($aDop['form_params']) ? print_r($aDop['form_params'], true) : '') // ); Request::jsonOpts(true); $response = Request::$method($url, isset($aDop['headers']) ? $aDop['headers'] : [], isset($aDop['form_params']) ? $aDop['form_params'] : []); $aData = ['response' => $response, 'statuscode' => $response->code]; if ($response->code >= 500) { // Yii::error('Error makeRequest(): RequestException 500'); $aData = ['response' => null, 'statuscode' => 500]; } else { if ($response->code >= 400) { // Yii::error('Error makeRequest(): ClientException ' . print_r($response->body)); $aData = ['response' => $response, 'statuscode' => $response->code]; } } } catch (\Exception $e) { Yii::error('Error makeRequest(): Exception ' . $e->getMessage() . ' ' . $e->getFile() . ' [' . $e->getLine() . '] '); $aData = ['response' => null, 'statuscode' => 500]; } Yii::info('makeRequest(): return data = ' . print_r($aData, true)); return $aData; }