本文整理汇总了PHP中Http::handle_redirects方法的典型用法代码示例。如果您正苦于以下问题:PHP Http::handle_redirects方法的具体用法?PHP Http::handle_redirects怎么用?PHP Http::handle_redirects使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Http
的用法示例。
在下文中一共展示了Http::handle_redirects方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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
//.........这里部分代码省略.........
$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;
}