/** * @inheritdoc */ public function format(HttpRequest $request) { $contentType = $this->contentType; $charset = $this->encoding === 'utf-8'; // ? Yii::$app->charset : $this->encoding; if (stripos($contentType, 'charset') === false) { $contentType .= '; charset=' . $charset; } $request->addHeader('Content-Type', $contentType); $data = $request->getData(); if ($data !== null) { if ($data instanceof DOMDocument) { $content = $data->saveXML(); } elseif ($data instanceof SimpleXMLElement) { $content = $data->saveXML(); } else { $dom = new DOMDocument($this->version, $charset); $root = new DOMElement($this->rootTag); $dom->appendChild($root); $this->buildXml($root, $data); $content = $dom->saveXML(); } $request->setContent($content); } return $request; }
/** * @param HttpRequest $request * @param callable|null $success * @param callable|null $failed * @return bool|\cdcchen\net\curl\HttpResponse * @throws RequestException */ protected static function sendRequest(HttpRequest $request, callable $success = null, callable $failed = null) { try { $response = $request->send(); if ($success === null) { return $response; } else { return call_user_func($success, $response); } } catch (CUrlRequestException $e) { if ($failed) { return call_user_func($failed, $request); } else { throw new RequestException($e->getMessage(), $e->getCode()); } } }