/** * @param RequestForm $model * @return ResponseRecord */ protected function send(RequestForm $model) { $this->module->trigger(Module::EVENT_ON_REQUEST, new RequestEvent(['form' => $model])); /** @var \yii\httpclient\Client $client */ $client = Yii::createObject($this->module->clientConfig); $client->baseUrl = $this->module->baseUrl; $begin = microtime(true); $response = $client->createRequest()->setMethod($model->method)->setUrl($model->getUri())->setData($model->getBodyParams())->setHeaders($model->getHeaders())->send(); $duration = microtime(true) - $begin; $record = new ResponseRecord(); $record->status = $response->getStatusCode(); $record->duration = $duration; foreach ($response->getHeaders() as $name => $values) { $name = str_replace(' ', '-', ucwords(str_replace('-', ' ', $name))); $record->headers[$name] = $values; } $record->content = $response->getContent(); $this->module->trigger(Module::EVENT_ON_RESPONSE, new ResponseEvent(['form' => $model, 'record' => $record])); return $record; }
/** * @param RequestForm $model * @return ResponseRecord */ protected function send(RequestForm $model) { $this->module->trigger(Module::EVENT_ON_REQUEST, new RequestEvent(['form' => $model])); /** @var \yii\httpclient\Client $client */ $client = Yii::createObject($this->module->clientConfig); $client->baseUrl = $this->module->baseUrl; $request = $client->createRequest(); $request->setMethod($model->method); $uri = $model->endpoint; $params = []; foreach ($model->queryKeys as $i => $key) { if ($model->queryActives[$i]) { $params[] = $key . '=' . urlencode($model->queryValues[$i]); } } if ($params) { $uri .= '?' . join('&', $params); } $request->setUrl($uri); $data = []; foreach ($model->bodyKeys as $i => $key) { if ($model->bodyActives[$i]) { $data[$key] = $model->bodyValues[$i]; } } $request->setData($data); $headers = []; foreach ($model->headerKeys as $i => $key) { if ($model->headerActives[$i]) { $headers[$key] = $model->headerValues[$i]; } } $request->setHeaders($headers); $begin = microtime(true); $response = $request->send(); $duration = microtime(true) - $begin; $record = new ResponseRecord(); $record->status = $response->getStatusCode(); $record->duration = $duration; foreach ($response->getHeaders() as $name => $values) { $name = str_replace(' ', '-', ucwords(str_replace('-', ' ', $name))); $record->headers[$name] = $values; } $record->content = $response->getContent(); $this->module->trigger(Module::EVENT_ON_RESPONSE, new ResponseEvent(['form' => $model, 'record' => $record])); return $record; }