Returns a list of headers from a key/value paired array.
public static formatHeadersForCurl ( array $headers ) : array | ||
$headers | array | Headers as key/value pairs. |
리턴 | array | List of headers ['Content-Type: text/html', '...']. |
/** * Outputs a response depending on the set cURL option. * * The response body can be written to a file, returned, echoed or * passed to a custom function. * * The response header might be passed to a custom function. * * @param Response $response Response which contains the response body. * @param array $curlOptions cURL options which are not stored within the Response. * @param resource $ch cURL handle to add headers if needed. * * @return null|string */ public static function handleOutput(Response $response, array $curlOptions, $ch) { // If there is a header function set, feed the http status and headers to it. if (isset($curlOptions[CURLOPT_HEADERFUNCTION])) { $headerList = array(HttpUtil::formatAsStatusString($response)); $headerList += HttpUtil::formatHeadersForCurl($response->getHeaders()); $headerList[] = ''; foreach ($headerList as $header) { call_user_func($curlOptions[CURLOPT_HEADERFUNCTION], $ch, $header); } } $body = $response->getBody(); if (!empty($curlOptions[CURLOPT_HEADER])) { $body = HttpUtil::formatAsStatusWithHeadersString($response) . $body; } if (isset($curlOptions[CURLOPT_WRITEFUNCTION])) { call_user_func($curlOptions[CURLOPT_WRITEFUNCTION], $ch, $body); } elseif (isset($curlOptions[CURLOPT_RETURNTRANSFER]) && $curlOptions[CURLOPT_RETURNTRANSFER] == true) { return $body; } elseif (isset($curlOptions[CURLOPT_FILE])) { $fp = $curlOptions[CURLOPT_FILE]; fwrite($fp, $body); fflush($fp); } else { echo $body; } }
/** * Returns a response for specified HTTP request. * * @param Request $request HTTP Request to send. * * @return Response Response for specified request. */ public function send(Request $request) { $ch = curl_init($request->getUrl()); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $request->getMethod()); curl_setopt($ch, CURLOPT_HTTPHEADER, HttpUtil::formatHeadersForCurl($request->getHeaders())); if (!is_null($request->getBody())) { curl_setopt($ch, CURLOPT_POSTFIELDS, $request->getBody()); } curl_setopt_array($ch, $request->getCurlOptions()); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FAILONERROR, false); curl_setopt($ch, CURLOPT_HEADER, true); list($status, $headers, $body) = HttpUtil::parseResponse(curl_exec($ch)); return new Response(HttpUtil::parseStatus($status), HttpUtil::parseHeaders($headers), $body, curl_getinfo($ch)); }