本文整理汇总了PHP中Guzzle\Http\Message\RequestInterface::getHeaders方法的典型用法代码示例。如果您正苦于以下问题:PHP RequestInterface::getHeaders方法的具体用法?PHP RequestInterface::getHeaders怎么用?PHP RequestInterface::getHeaders使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Guzzle\Http\Message\RequestInterface
的用法示例。
在下文中一共展示了RequestInterface::getHeaders方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: cloneRequestWithMethod
public function cloneRequestWithMethod(RequestInterface $request, $method)
{
if ($request->getClient()) {
$cloned = $request->getClient()->createRequest($method, $request->getUrl(), $request->getHeaders());
} else {
$cloned = $this->create($method, $request->getUrl(), $request->getHeaders());
}
$cloned->getCurlOptions()->replace($request->getCurlOptions()->toArray());
$cloned->setEventDispatcher(clone $request->getEventDispatcher());
if (!$cloned instanceof EntityEnclosingRequestInterface) {
$cloned->removeHeader('Content-Length');
} elseif ($request instanceof EntityEnclosingRequestInterface) {
$cloned->setBody($request->getBody());
}
$cloned->getParams()->replace($request->getParams()->toArray());
$cloned->dispatch('request.clone', array('request' => $cloned));
return $cloned;
}
示例2: moveHeadersToQuery
private function moveHeadersToQuery(RequestInterface $request)
{
$query = array('X-Amz-Date' => gmdate('Ymd\\THis\\Z', $this->getTimestamp()));
foreach ($request->getHeaders() as $name => $header) {
if (substr($name, 0, 5) == 'x-amz') {
$query[$header->getName()] = (string) $header;
}
if ($name != 'host') {
$request->removeHeader($name);
}
}
$request->getQuery()->overwriteWith($query);
}
示例3: getHeadersToSign
/**
* Get an array of headers to be signed
*
* @param RequestInterface $request Request to get headers from
*
* @return array
*/
protected function getHeadersToSign(RequestInterface $request)
{
$headers = array();
foreach ($request->getHeaders()->toArray() as $k => $v) {
$k = strtolower($k);
if ($k == 'host' || strpos($k, 'x-amz-') !== false) {
$headers[$k] = implode(',', $v);
}
}
// Sort the headers alphabetically and add them to the string to sign
ksort($headers);
return $headers;
}
示例4: createCanonicalizedAmzHeaders
/**
* Create a canonicalized AmzHeaders string for a signature.
*
* @param RequestInterface $request Request from which to gather headers
*
* @return string Returns canonicalized AMZ headers.
*/
protected function createCanonicalizedAmzHeaders(RequestInterface $request)
{
$headers = array();
foreach ($request->getHeaders(true) as $header) {
/** @var $header \Guzzle\Http\Message\Header */
$name = strtolower($header->getName());
if (strpos($name, 'x-amz-') === 0) {
$headers[$name] = $name . ':' . (string) $header;
}
}
if (empty($headers)) {
return '';
} else {
ksort($headers);
return implode("\n", $headers) . "\n";
}
}
示例5: createCanonicalizedAmzHeaders
/**
* Create a canonicalized AmzHeaders string for a signature.
*
* @param RequestInterface $request Request from which to gather headers
*
* @return string Returns canonicalized AMZ headers.
*/
private function createCanonicalizedAmzHeaders(RequestInterface $request)
{
$headers = array();
foreach ($request->getHeaders() as $name => $header) {
$name = strtolower($name);
if (strpos($name, 'x-amz-') === 0) {
$value = trim((string) $header);
if ($value || $value === '0') {
$headers[$name] = $name . ':' . $value;
}
}
}
if (!$headers) {
return '';
}
ksort($headers);
return implode("\n", $headers) . "\n";
}
示例6: getCacheKey
/**
* Calculate the hash key of a request object
*
* @param RequestInterface $request Request to hash
* @param string $raw Set to TRUE to retrieve the un-encoded string for debugging
*
* @return string
*/
public function getCacheKey(RequestInterface $request, $raw = false)
{
// See if the key has already been calculated
$key = $request->getParams()->get('cache.key');
// Always recalculate when using the raw option
if (!$key || $raw) {
// Generate the start of the key
$key = $request->getScheme() . '_' . $request->getHost() . $request->getPath();
$filterHeaders = array('Cache-Control');
$filterQuery = array();
// Check to see how and if the key should be filtered
foreach (explode(';', $request->getParams()->get('cache.key_filter')) as $part) {
$pieces = array_map('trim', explode('=', $part));
if (isset($pieces[1])) {
$remove = array_map('trim', explode(',', $pieces[1]));
if ($pieces[0] == 'header') {
$filterHeaders = array_merge($filterHeaders, $remove);
} elseif ($pieces[0] == 'query') {
$filterQuery = array_merge($filterQuery, $remove);
}
}
}
// Use the filtered query string
$queryString = (string) $request->getQuery()->filter(function ($key, $value) use($filterQuery) {
return !in_array($key, $filterQuery);
});
// Use the filtered headers
$headerString = http_build_query($request->getHeaders()->map(function ($key, $value) {
return count($value) == 1 ? $value[0] : $value;
})->filter(function ($key, $value) use($filterHeaders) {
return !in_array($key, $filterHeaders);
})->getAll());
if ($raw) {
$key = strtolower('gz_' . $key . $queryString . '_' . $headerString);
} else {
$key = strtolower('gz_' . md5($key . $queryString . '_' . $headerString));
$request->getParams()->set('cache.key', $key);
}
}
return $key;
}
示例7: collectRequest
/**
* Collect & sanitize data about a Guzzle request
*
* @param Guzzle\Http\Message\RequestInterface $request
*
* @return array
*/
private function collectRequest(GuzzleRequestInterface $request)
{
$body = null;
if ($request instanceof EntityEnclosingRequestInterface) {
$body = (string) $request->getBody();
}
return array('headers' => $request->getHeaders(), 'method' => $request->getMethod(), 'scheme' => $request->getScheme(), 'host' => $request->getHost(), 'port' => $request->getPort(), 'path' => $request->getPath(), 'query' => $request->getQuery(), 'body' => $body);
}
示例8: cloneRequestWithMethod
/**
* Clone a request while changing the method. Emulates the behavior of
* {@see Guzzle\Http\Message\Request::clone}, but can change the HTTP method.
*
* @param RequestInterface $request Request to clone
* @param string $method Method to set
*
* @return RequestInterface
*/
public function cloneRequestWithMethod(RequestInterface $request, $method)
{
// Create the request with the same client if possible
if ($client = $request->getClient()) {
$cloned = $request->getClient()->createRequest($method, $request->getUrl(), $request->getHeaders());
} else {
$cloned = $this->create($method, $request->getUrl(), $request->getHeaders());
}
$cloned->getCurlOptions()->replace($request->getCurlOptions()->toArray());
$cloned->setEventDispatcher(clone $request->getEventDispatcher());
// Ensure that that the Content-Length header is not copied if changing to GET or HEAD
if (!$cloned instanceof EntityEnclosingRequestInterface) {
$cloned->removeHeader('Content-Length');
} elseif ($request instanceof EntityEnclosingRequestInterface) {
$cloned->setBody($request->getBody());
}
$cloned->getParams()->replace($request->getParams()->toArray());
$cloned->dispatch('request.clone', array('request' => $cloned));
return $cloned;
}
示例9: moveHeadersToQuery
private function moveHeadersToQuery(RequestInterface $request)
{
$query = $request->getQuery();
foreach ($request->getHeaders() as $name => $header) {
if (substr($name, 0, 5) == 'x-amz') {
$query[$header->getName()] = (string) $header;
}
if ($name !== 'host') {
$request->removeHeader($name);
}
}
}
示例10: onRequest
protected function onRequest(ConnectionInterface $from, RequestInterface $request)
{
$requestPath = $request->getPath();
$body = (string) $request->getBody();
if (!empty($body)) {
$query = QueryString::fromString($body);
$fields = $query->getAll();
$request->addPostFields($fields);
}
// TODO: use only $req->acceptLanguage() in Managers
$_SERVER['HTTP_ACCEPT_LANGUAGE'] = (string) $request->getHeaders()->get('accept-language');
$routes = array('/' => 'executeUiBooter', '/api' => 'executeApiCall', '/api/group' => 'executeApiCallGroup', '/sbin/apicall.php' => 'executeApiCall', '/sbin/apicallgroup.php' => 'executeApiCallGroup', '/sbin/rawdatacall.php' => 'executeRawDataCall', '#^/([a-zA-Z0-9-_.]+)\\.html$#' => 'executeUiBooter', '#^/(bin|boot|etc|home|tmp|usr|var)/(.*)$#' => 'executeReadFile', '/webos.webapp' => 'executeReadManifest', '/hello' => 'executeSayHello');
foreach ($routes as $path => $method) {
$matched = false;
if (substr($path, 0, 1) == '#') {
// Regex
if (preg_match($path, $requestPath, $matches)) {
$result = $this->{$method}($from, $request, $matches);
$matched = true;
}
} else {
if ($path == $requestPath) {
$result = $this->{$method}($from, $request);
$matched = true;
}
}
if ($matched) {
if (empty($result)) {
$result = '';
}
if ($result instanceof ResponseContent) {
$result = $result->generate();
}
if ($result instanceof HTTPServerResponse) {
if ($result->headersSent()) {
// Implicit mode, content already sent
if ($result->getHeader('Connection') != 'keep-alive') {
$from->close();
}
} else {
$result->send();
}
return;
}
$response = null;
if (is_string($result)) {
$response = new Response(200, array(), (string) $result);
} else {
$response = $result;
}
$from->send((string) $response);
$from->close();
return;
}
}
$resp = new Response(404, array('Content-Type' => 'text/plain'), '404 Not Found');
$from->send((string) $resp);
$from->close();
}
示例11: exec
private function exec(\Guzzle\Http\Message\RequestInterface $request)
{
$start = microtime(true);
$this->responseCode = 0;
// Get snapshot of request headers.
$request_headers = $request->getRawHeaders();
// Mask authorization for logs.
$request_headers = preg_replace('!\\nAuthorization: (Basic|Digest) [^\\r\\n]+\\r!i', "\nAuthorization: \$1 [**masked**]\r", $request_headers);
try {
$response = $request->send();
} catch (\Guzzle\Http\Exception\BadResponseException $e) {
$response = $e->getResponse();
} catch (\Guzzle\Http\Exception\CurlException $e) {
// Timeouts etc.
DebugData::$raw = '';
DebugData::$code = $e->getErrorNo();
DebugData::$code_status = $e->getError();
DebugData::$code_class = 0;
DebugData::$exception = $e->getMessage();
DebugData::$opts = array('request_headers' => $request_headers);
DebugData::$data = null;
$exception = new ResponseException($e->getError(), $e->getErrorNo(), $request->getUrl(), DebugData::$opts);
$exception->requestObj = $request;
// Log Exception
$headers_array = $request->getHeaders();
unset($headers_array['Authorization']);
$headerString = '';
foreach ($headers_array as $value) {
$headerString .= $value->getName() . ': ' . $value . " ";
}
$log_message = '{code_status} ({code}) Request Details:[ {r_method} {r_resource} {r_scheme} {r_headers} ]';
$httpScheme = strtoupper(str_replace('https', 'http', $request->getScheme())) . $request->getProtocolVersion();
$log_params = array('code' => $e->getErrorNo(), 'code_status' => $e->getError(), 'r_method' => $request->getUrl(), 'r_resource' => $request->getRawHeaders(), 'r_scheme' => $httpScheme, 'r_headers' => $headerString);
self::$logger->emergency($log_message, $log_params);
throw $exception;
}
$this->responseCode = $response->getStatusCode();
$this->responseText = trim($response->getBody(true));
$this->responseLength = $response->getContentLength();
$this->responseMimeType = $response->getContentType();
$this->responseObj = array();
$content_type = $response->getContentType();
$firstChar = substr($this->responseText, 0, 1);
if (strpos($content_type, '/json') !== false && ($firstChar == '{' || $firstChar == '[')) {
$response_obj = @json_decode($this->responseText, true);
if (is_array($response_obj)) {
$this->responseObj = $response_obj;
}
}
$status = self::getStatusMessage($this->responseCode);
$code_class = floor($this->responseCode / 100);
DebugData::$raw = $this->responseText;
DebugData::$opts = array('request_headers' => $request_headers, 'response_headers' => $response->getRawHeaders());
if ($request instanceof \Guzzle\Http\Message\EntityEnclosingRequestInterface) {
DebugData::$opts['request_body'] = (string) $request->getBody();
}
DebugData::$opts['request_type'] = class_implements($request);
DebugData::$data = $this->responseObj;
DebugData::$code = $this->responseCode;
DebugData::$code_status = $status;
DebugData::$code_class = $code_class;
DebugData::$exception = null;
DebugData::$time_elapsed = microtime(true) - $start;
if ($code_class != 2) {
$uri = $request->getUrl();
if (!empty($this->responseCode) && isset($this->responseObj['message'])) {
$message = 'Code: ' . $this->responseCode . '; Message: ' . $this->responseObj['message'];
} else {
$message = 'API returned HTTP code of ' . $this->responseCode . ' when fetching from ' . $uri;
}
DebugData::$exception = $message;
$this->debugCallback(DebugData::toArray());
self::$logger->error($this->responseText);
// Create better status to show up in logs
$status .= ': ' . $request->getMethod() . ' ' . $uri;
if ($request instanceof \Guzzle\Http\Message\EntityEnclosingRequestInterface) {
$body = $request->getBody();
if ($body instanceof \Guzzle\Http\EntityBodyInterface) {
$status .= ' with Content-Length of ' . $body->getContentLength() . ' and Content-Type of ' . $body->getContentType();
}
}
$exception = new ResponseException($status, $this->responseCode, $uri, DebugData::$opts, $this->responseText);
$exception->requestObj = $request;
$exception->responseObj = $response;
throw $exception;
}
$this->debugCallback(DebugData::toArray());
}
示例12: factory
//.........这里部分代码省略.........
}
// @codeCoverageIgnoreEnd
// Specify settings according to the HTTP method
switch ($request->getMethod()) {
case 'GET':
$curlOptions[CURLOPT_HTTPGET] = true;
break;
case 'HEAD':
$curlOptions[CURLOPT_NOBODY] = true;
break;
case 'POST':
$curlOptions[CURLOPT_POST] = true;
// Special handling for POST specific fields and files
if (count($request->getPostFiles())) {
$curlOptions[CURLOPT_POSTFIELDS] = $request->getPostFields()->getAll();
$request->removeHeader('Content-Length');
} elseif (count($request->getPostFields())) {
$curlOptions[CURLOPT_POSTFIELDS] = (string) $request->getPostFields();
$request->removeHeader('Content-Length');
}
break;
case 'PUT':
case 'PATCH':
$curlOptions[CURLOPT_UPLOAD] = true;
// Let cURL handle setting the Content-Length header
$contentLength = $request->getHeader('Content-Length');
if ($contentLength != null) {
$contentLength = (int) (string) $contentLength;
$curlOptions[CURLOPT_INFILESIZE] = $contentLength;
$tempHeaders['Content-Length'] = $contentLength;
$request->removeHeader('Content-Length');
}
break;
}
// Special handling for requests sending raw data
if ($request instanceof EntityEnclosingRequestInterface) {
// Don't modify POST requests using POST fields and files via cURL
if (!isset($curlOptions[CURLOPT_POSTFIELDS])) {
if ($request->getBody()) {
// Add a callback for curl to read data to send with the request
// only if a body was specified
$curlOptions[CURLOPT_READFUNCTION] = array($mediator, 'readRequestBody');
} else {
// If no body is being sent, always send Content-Length of 0
$request->setHeader('Content-Length', 0);
$request->removeHeader('Transfer-Encoding');
// Need to remove CURLOPT_UPLOAD to prevent chunked encoding
unset($curlOptions[CURLOPT_UPLOAD]);
unset($curlOptions[CURLOPT_POST]);
}
}
// If the Expect header is not present, prevent curl from adding it
if (!$request->hasHeader('Expect')) {
$curlOptions[CURLOPT_HTTPHEADER][] = 'Expect:';
}
}
// Set custom cURL options
foreach ($requestCurlOptions as $key => $value) {
if (is_numeric($key)) {
$curlOptions[$key] = $value;
}
}
// Check if any headers or cURL options are blacklisted
$client = $request->getClient();
if ($client) {
$blacklist = $client->getConfig('curl.blacklist');
if ($blacklist) {
foreach ($blacklist as $value) {
if (strpos($value, 'header.') === 0) {
// Remove headers that may have previously been set
// but are supposed to be blacklisted
$key = substr($value, 7);
$request->removeHeader($key);
$curlOptions[CURLOPT_HTTPHEADER][] = $key . ':';
} else {
unset($curlOptions[$value]);
}
}
}
}
// Add any custom headers to the request. Emtpy headers will cause curl to
// not send the header at all.
foreach ($request->getHeaders() as $headerName => $values) {
foreach ($values as $value) {
$curlOptions[CURLOPT_HTTPHEADER][] = trim("{$headerName}: {$value}");
}
}
// Apply the options to a new cURL handle.
$handle = curl_init();
curl_setopt_array($handle, $curlOptions);
$request->getParams()->set('curl.last_options', $curlOptions);
// Some fields need to be removed from the request in order to properly
// send a cURL request message. The fields that were removed for this
// purpose (e.g. Content-Length) should be aggregated in this array and
// added back to the request. Does not apply to blacklisted headers.
foreach ($tempHeaders as $key => $value) {
$request->setHeader($key, $value);
}
return new static($handle, $curlOptions);
}
示例13: getHeaders
/**
* Get all headers as a collection
*
* @return HeaderCollection
*/
public function getHeaders()
{
return $this->wrapped->getHeaders();
}
示例14: factory
/**
* Factory method to create a new curl handle based on an HTTP request
*
* There are some helpful options you can set to enable specific behavior:
* - disabled_wire: This is a performance improvement that will disable
* some debugging functionality with cURL. The functionality
* it disabled allows you to see the exact HTTP request sent over
* the wire.
* - progress: Set to true to enable progress function callbacks. Most
* People don't need this, so it has been disabled by default.
*
* @param RequestInterface $request Request
*
* @return CurlHandle
*/
public static function factory(RequestInterface $request)
{
$handle = curl_init();
$mediator = new RequestMediator($request);
$requestCurlOptions = $request->getCurlOptions();
// Array of default cURL options.
$curlOptions = array(CURLOPT_URL => $request->getUrl(), CURLOPT_CUSTOMREQUEST => $request->getMethod(), CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_RETURNTRANSFER => false, CURLOPT_HEADER => false, CURLOPT_USERAGENT => (string) $request->getHeader('User-Agent'), CURLOPT_ENCODING => '', CURLOPT_PORT => $request->getPort(), CURLOPT_HTTP_VERSION => $request->getProtocolVersion() === '1.0' ? CURL_HTTP_VERSION_1_0 : CURL_HTTP_VERSION_1_1, CURLOPT_HTTPHEADER => array(), CURLOPT_HEADERFUNCTION => array($mediator, 'receiveResponseHeader'));
// Enable the progress function if the 'progress' param was set
if ($requestCurlOptions->get('progress')) {
$curlOptions[CURLOPT_PROGRESSFUNCTION] = array($mediator, 'progress');
$curlOptions[CURLOPT_NOPROGRESS] = false;
}
// Enable curl debug information if the 'debug' param was set
if (!$requestCurlOptions->get('disable_wire')) {
$curlOptions[CURLOPT_STDERR] = fopen('php://temp', 'r+');
$curlOptions[CURLOPT_VERBOSE] = true;
}
// HEAD requests need no response body, everything else might
if ($request->getMethod() != 'HEAD') {
$curlOptions[CURLOPT_WRITEFUNCTION] = array($mediator, 'writeResponseBody');
}
// Account for PHP installations with safe_mode or open_basedir enabled
// @codeCoverageIgnoreStart
if (Guzzle::getCurlInfo('follow_location')) {
$curlOptions[CURLOPT_FOLLOWLOCATION] = true;
$curlOptions[CURLOPT_MAXREDIRS] = 5;
}
// @codeCoverageIgnoreEnd
$headers = $request->getHeaders()->getAll();
// Specify settings according to the HTTP method
switch ($request->getMethod()) {
case 'GET':
$curlOptions[CURLOPT_HTTPGET] = true;
break;
case 'HEAD':
$curlOptions[CURLOPT_NOBODY] = true;
unset($curlOptions[CURLOPT_WRITEFUNCTION]);
break;
case 'POST':
$curlOptions[CURLOPT_POST] = true;
break;
case 'PUT':
case 'PATCH':
$curlOptions[CURLOPT_UPLOAD] = true;
if ($request->hasHeader('Content-Length')) {
unset($headers['Content-Length']);
$curlOptions[CURLOPT_INFILESIZE] = (int) (string) $request->getHeader('Content-Length');
}
break;
}
if ($request instanceof EntityEnclosingRequestInterface) {
// If no body is being sent, always send Content-Length of 0
if (!$request->getBody() && !count($request->getPostFields())) {
$headers['Content-Length'] = 0;
unset($headers['Transfer-Encoding']);
// Need to remove CURLOPT_UPLOAD to prevent chunked encoding
unset($curlOptions[CURLOPT_UPLOAD]);
unset($curlOptions[CURLOPT_POST]);
// Not reading from a callback when using empty body
unset($curlOptions[CURLOPT_READFUNCTION]);
} else {
// Add a callback for curl to read data to send with the request
$curlOptions[CURLOPT_READFUNCTION] = array($mediator, 'readRequestBody');
}
// If the Expect header is not present, prevent curl from adding it
if (!$request->hasHeader('Expect')) {
$curlOptions[CURLOPT_HTTPHEADER][] = 'Expect:';
}
}
// Set custom cURL options
foreach ($requestCurlOptions as $key => $value) {
if (is_numeric($key)) {
$curlOptions[$key] = $value;
}
}
// Check if any headers or cURL options are blacklisted
$client = $request->getClient();
if ($client) {
$blacklist = $client->getConfig('curl.blacklist');
if ($blacklist) {
foreach ($blacklist as $value) {
if (strpos($value, 'header.') === 0) {
$blacklistHeader = substr($value, 7);
// Remove headers that may have previously been set
// but are supposed to be blacklisted
//.........这里部分代码省略.........