/** * @param $url * @param string $action 取值为update等,与请求URL中名称一致,用于选择错误结果数据模板 * @param $dataXml string 请求体 * @return array|mixed */ private function doRequest($url, $action, $dataXml = null) { // APF_DebuggerInterceptor根据请求参数debug决定是否设置debugger // debug=0清除cookie,关闭调试模式;debug>0设置cookie,开启调试模式 APF::get_instance()->debug(get_class($this) . '->Call: ' . $url); $curlClient = new APF_Http_Client_Curl(); $curlClient->set_url($url); if ($dataXml != null) { $curlClient->set_attribute(CURLOPT_POSTFIELDS, $dataXml); $curlClient->set_attribute(CURLOPT_POST, true); } $userAgent = $this->getUserAgent(); $curlClient->set_attribute(CURLOPT_USERAGENT, $userAgent); $curlClient->set_attribute(CURLOPT_NOSIGNAL, 1); $curlClient->set_attribute(CURLOPT_CONNECTTIMEOUT_MS, $this->connectTimeout); $curlClient->set_attribute(CURLOPT_TIMEOUT_MS, $this->readTimeout); if ($curlClient->execute()) { $responseText = json_decode($curlClient->get_response_text(), true); return $responseText; } else { $errno = $curlClient->get_curl_errno(); if ($errno == 0) { // curl执行没有错误,但是响应不正常 $curlInfo = $curlClient->get_curl_info(); $responseDecoded = json_decode($curlClient->get_response_text(), true); if (is_null($responseDecoded)) { switch ($action) { case "select": $result = $this->getSelectErrorRespTemplate(); break; case "update": $result = $this->getUpdateErrorRespTemplate(); break; } $result['responseHeader']['status'] = $curlInfo['http_code']; $result['error']['code'] = $curlInfo['http_code']; $result['error']['msg'] = $curlClient->get_response_text(); return $result; } else { $responseDecoded['params'] = $this->systemParams; return $responseDecoded; } } else { // curl执行出错 switch ($action) { case "select": $result = $this->getSelectErrorRespTemplate(); break; case "update": $result = $this->getUpdateErrorRespTemplate(); break; } $result['error']['code'] = $errno; $result['error']['msg'] = $curlClient->get_curl_error(); return $result; } } }