本文整理汇总了PHP中Http::processHeaders方法的典型用法代码示例。如果您正苦于以下问题:PHP Http::processHeaders方法的具体用法?PHP Http::processHeaders怎么用?PHP Http::processHeaders使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Http
的用法示例。
在下文中一共展示了Http::processHeaders方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: request
//.........这里部分代码省略.........
curl_setopt($handle, CURLOPT_POSTFIELDS, $args['body']);
break;
default:
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, $args['method']);
if (!is_null($args['body'])) {
curl_setopt($handle, CURLOPT_POSTFIELDS, $args['body']);
}
break;
}
if ($args['blocking'] === true) {
curl_setopt($handle, CURLOPT_HEADERFUNCTION, array($this, 'stream_headers'));
curl_setopt($handle, CURLOPT_WRITEFUNCTION, array($this, 'stream_body'));
}
curl_setopt($handle, CURLOPT_HEADER, false);
if (isset($args['limit_response_size'])) {
$this->max_body_length = intval($args['limit_response_size']);
} else {
$this->max_body_length = false;
}
// If streaming to a file open a file handle, and setup our curl streaming handler
if ($args['stream']) {
$this->stream_handle = @fopen($args['filename'], 'w+');
if (!$this->stream_handle) {
Http::set_error(10);
return $this;
}
} else {
$this->stream_handle = false;
}
if (!empty($args['headers'])) {
// cURL expects full header strings in each element
$headers = array();
foreach ($args['headers'] as $name => $value) {
$headers[] = "{$name}: {$value}";
}
curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
}
if ($args['httpversion'] == '1.0') {
curl_setopt($handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
} else {
curl_setopt($handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
}
// We don't need to return the body, so don't. Just execute request and return.
if (!$args['blocking']) {
curl_exec($handle);
if ($curl_error = curl_error($handle)) {
curl_close($handle);
Http::set_error(11);
return $this;
}
if (in_array(curl_getinfo($handle, CURLINFO_HTTP_CODE), array(301, 302))) {
curl_close($handle);
Http::set_error(5);
return $this;
}
curl_close($handle);
return array('headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array());
}
$theResponse = curl_exec($handle);
$theHeaders = Http::processHeaders($this->headers, $url);
$theBody = $this->body;
$this->headers = '';
$this->body = '';
$curl_error = curl_errno($handle);
// If an error occured, or, no response
if ($curl_error or strlen($theBody) == 0 and empty($theHeaders['headers'])) {
if (CURLE_WRITE_ERROR == $curl_error and $args['stream']) {
fclose($this->stream_handle);
Http::set_error(9);
return $this;
}
if ($curl_error = curl_error($handle)) {
curl_close($handle);
Http::set_error(11);
return $this;
}
if (in_array(curl_getinfo($handle, CURLINFO_HTTP_CODE), array(301, 302))) {
curl_close($handle);
Http::set_error(5);
return $this;
}
}
$response = array();
$response['code'] = curl_getinfo($handle, CURLINFO_HTTP_CODE);
$response['message'] = $response['code'];
curl_close($handle);
if ($args['stream']) {
fclose($this->stream_handle);
}
$response = array('headers' => $theHeaders['headers'], 'body' => null, 'response' => $response, 'cookies' => $theHeaders['cookies'], 'filename' => $args['filename']);
// Handle redirects
if (($redirect_response = Http::handle_redirects($url, $args, $response)) !== false) {
return $redirect_response;
}
if ($args['decompress'] === true and Encoding::should_decode($theHeaders['headers']) === true) {
$theBody = Encoding::decompress($theBody);
}
$response['body'] = str_replace("", "", $theBody);
return $response;
}
示例2: request
/**
*
* @param mixed $url
* @param mixed $args
* @return
*/
private function request($url, $args)
{
$defaults = array('method' => 'GET', 'timeout' => 10, 'redirection' => 5, 'requested' => 0, 'httpversion' => 1.0, 'user-agent' => 'NUKEVIET CMS ' . $this->site_config['version'] . '. Developed by VINADES. Url: http://nukeviet.vn. Code: ' . md5($this->site_config['sitekey']), 'referer' => null, 'reject_unsafe_urls' => false, 'blocking' => true, 'headers' => array(), 'cookies' => array(), 'body' => null, 'compress' => false, 'decompress' => true, 'sslverify' => true, 'sslcertificates' => $this->root_dir . '/includes/certificates/ca-bundle.crt', 'stream' => false, 'filename' => null, 'limit_response_size' => null);
// Get full args
$args = $this->build_args($args, $defaults);
// Get url info
$infoURL = @parse_url($url);
// Check valid url
if (empty($url) or empty($infoURL['scheme'])) {
$this->set_error(1);
return false;
}
// Set SSL
$args['ssl'] = $infoURL['scheme'] == 'https' or $infoURL['scheme'] == 'ssl';
/**
* Block url
* By basic version, all url will be enabled and no blocking by check function
*/
//if( $this->is_blocking( $url ) )
//{
// $this->set_error(2);
// return false;
//}
// Determine if this request is to OUR install of NukeViet
$homeURL = parse_url($this->site_config['my_domain']);
$args['local'] = $homeURL['host'] == $infoURL['host'] || 'localhost' == $infoURL['host'];
unset($homeURL);
// If Stream but no file, default is a file in temp dir with base $url name
if ($args['stream'] and empty($args['filename'])) {
$args['filename'] = $this->tmp_dir . '/' . basename($url);
}
// Check if streaming a file
if ($args['stream']) {
$args['blocking'] = true;
if (!@is_writable(dirname($args['filename']))) {
$this->set_error(3);
return false;
}
}
// Default header is an empty array
if (is_null($args['headers'])) {
$args['headers'] = array();
}
if (!is_array($args['headers'])) {
$processedHeaders = Http::processHeaders($args['headers'], $url);
$args['headers'] = $processedHeaders['headers'];
}
// Get User Agent
if (isset($args['headers']['User-Agent'])) {
$args['user-agent'] = $args['headers']['User-Agent'];
unset($args['headers']['User-Agent']);
}
if (isset($args['headers']['user-agent'])) {
$args['user-agent'] = $args['headers']['user-agent'];
unset($args['headers']['user-agent']);
}
// Get Referer
if (isset($args['headers']['Referer'])) {
$args['referer'] = $args['headers']['Referer'];
unset($args['headers']['Referer']);
} elseif (isset($args['headers']['referer'])) {
$args['referer'] = $args['headers']['referer'];
unset($args['headers']['referer']);
}
if ($args['httpversion'] == '1.1' and !isset($args['headers']['connection'])) {
$args['headers']['connection'] = 'close';
}
Http::buildCookieHeader($args);
Http::mbstring_binary_safe_encoding();
if (!isset($args['headers']['Accept-Encoding'])) {
if ($encoding = Encoding::accept_encoding($url, $args)) {
$args['headers']['Accept-Encoding'] = $encoding;
}
}
if (!is_null($args['body']) and '' != $args['body'] or $args['method'] == 'POST' or $args['method'] == 'PUT') {
if (is_array($args['body']) or is_object($args['body'])) {
$args['body'] = http_build_query($args['body'], null, '&');
if (!isset($args['headers']['Content-Type'])) {
$args['headers']['Content-Type'] = 'application/x-www-form-urlencoded; charset=' . $this->site_config['site_charset'];
}
}
if ($args['body'] === '') {
$args['body'] = null;
}
if (!isset($args['headers']['Content-Length']) and !isset($args['headers']['content-length'])) {
$args['headers']['Content-Length'] = strlen($args['body']);
}
}
$response = $this->_dispatch_request($url, $args);
Http::reset_mbstring_encoding();
if ($this->is_error($response)) {
return $response;
}
// Append cookies that were used in this request to the response
//.........这里部分代码省略.........
示例3: request
//.........这里部分代码省略.........
$strHeaders .= 'Referer: ' . $args['referer'] . "\r\n";
}
if (is_array($args['headers'])) {
foreach ((array) $args['headers'] as $header => $headerValue) {
$strHeaders .= $header . ': ' . $headerValue . "\r\n";
}
} else {
$strHeaders .= $args['headers'];
}
//if( $proxy->use_authentication() )
//{
// $strHeaders .= $proxy->authentication_header() . "\r\n";
//}
$strHeaders .= "\r\n";
if (!is_null($args['body'])) {
$strHeaders .= $args['body'];
}
fwrite($handle, $strHeaders);
if (!$args['blocking']) {
stream_set_blocking($handle, 0);
fclose($handle);
return array('headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array());
}
$strResponse = '';
$bodyStarted = false;
$keep_reading = true;
$block_size = 4096;
if (isset($args['limit_response_size'])) {
$block_size = min($block_size, $args['limit_response_size']);
}
// If streaming to a file setup the file handle
if ($args['stream']) {
$stream_handle = @fopen($args['filename'], 'w+');
if (!$stream_handle) {
Http::set_error(8);
return false;
}
$bytes_written = 0;
while (!feof($handle) and $keep_reading) {
$block = fread($handle, $block_size);
if (!$bodyStarted) {
$strResponse .= $block;
if (strpos($strResponse, "\r\n\r\n")) {
$process = Http::processResponse($strResponse);
$bodyStarted = true;
$block = $process['body'];
unset($strResponse);
$process['body'] = '';
}
}
$this_block_size = strlen($block);
if (isset($args['limit_response_size']) and $bytes_written + $this_block_size > $args['limit_response_size']) {
$block = substr($block, 0, $args['limit_response_size'] - $bytes_written);
}
$bytes_written_to_file = fwrite($stream_handle, $block);
if ($bytes_written_to_file != $this_block_size) {
fclose($handle);
fclose($stream_handle);
Http::set_error(9);
return false;
}
$bytes_written += $bytes_written_to_file;
$keep_reading = !isset($args['limit_response_size']) or $bytes_written < $args['limit_response_size'];
}
fclose($stream_handle);
} else {
$header_length = 0;
// Not end file and some one
while (!feof($handle) and $keep_reading) {
$block = fread($handle, $block_size);
$strResponse .= $block;
if (!$bodyStarted and strpos($strResponse, "\r\n\r\n")) {
$header_length = strpos($strResponse, "\r\n\r\n") + 4;
$bodyStarted = true;
}
$keep_reading = (!$bodyStarted or !isset($args['limit_response_size']) or strlen($strResponse) < $header_length + $args['limit_response_size']);
}
$process = Http::processResponse($strResponse);
unset($strResponse);
}
fclose($handle);
$arrHeaders = Http::processHeaders($process['headers'], $url);
$response = array('headers' => $arrHeaders['headers'], 'body' => null, 'response' => $arrHeaders['response'], 'cookies' => $arrHeaders['cookies'], 'filename' => $args['filename']);
// Handle redirects
if (false !== ($redirect_response = Http::handle_redirects($url, $args, $response))) {
return $redirect_response;
}
// If the body was chunk encoded, then decode it.
if (!empty($process['body']) and isset($arrHeaders['headers']['transfer-encoding']) and 'chunked' == $arrHeaders['headers']['transfer-encoding']) {
$process['body'] = Http::chunkTransferDecode($process['body']);
}
if ($args['decompress'] === true and Encoding::should_decode($arrHeaders['headers']) === true) {
$process['body'] = Encoding::decompress($process['body']);
}
if (isset($args['limit_response_size']) and strlen($process['body']) > $args['limit_response_size']) {
$process['body'] = substr($process['body'], 0, $args['limit_response_size']);
}
$response['body'] = str_replace("", "", $process['body']);
return $response;
}