当前位置: 首页>>代码示例>>PHP>>正文


PHP WP_Http::processHeaders方法代码示例

本文整理汇总了PHP中WP_Http::processHeaders方法的典型用法代码示例。如果您正苦于以下问题:PHP WP_Http::processHeaders方法的具体用法?PHP WP_Http::processHeaders怎么用?PHP WP_Http::processHeaders使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在WP_Http的用法示例。


在下文中一共展示了WP_Http::processHeaders方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: pre_http_request

 /**
  * Pre HTTP request
  *
  * @see https://github.com/WordPress/WordPress/blob/3.9.1/wp-includes/class-http.php#L150-L164
  * @return string
  */
 public function pre_http_request($preempt, $request, $url)
 {
     $response = file_get_contents(dirname(__FILE__) . '/Mock/GetIssuersXml200.http');
     $processedResponse = WP_Http::processResponse($response);
     $processedHeaders = WP_Http::processHeaders($processedResponse['headers'], $url);
     $processedHeaders['body'] = $processedResponse['body'];
     return $processedHeaders;
 }
开发者ID:wp-pay-gateways,项目名称:targetpay,代码行数:14,代码来源:RemoteGetTest.php

示例2: request


//.........这里部分代码省略.........
     }
     if (function_exists('wp_kses_bad_protocol')) {
         if ($r['reject_unsafe_urls']) {
             $url = wp_http_validate_url($url);
         }
         if ($url) {
             $url = wp_kses_bad_protocol($url, array('http', 'https', 'ssl'));
         }
     }
     $arrURL = @parse_url($url);
     if (empty($url) || empty($arrURL['scheme'])) {
         return new WP_Error('http_request_failed', __('A valid URL was not provided.'));
     }
     if ($this->block_request($url)) {
         return new WP_Error('http_request_failed', __('User has blocked requests through HTTP.'));
     }
     // If we are streaming to a file but no filename was given drop it in the WP temp dir
     // and pick its name using the basename of the $url
     if ($r['stream']) {
         if (empty($r['filename'])) {
             $r['filename'] = get_temp_dir() . basename($url);
         }
         // Force some settings if we are streaming to a file and check for existence and perms of destination directory
         $r['blocking'] = true;
         if (!wp_is_writable(dirname($r['filename']))) {
             return new WP_Error('http_request_failed', __('Destination directory for file streaming does not exist or is not writable.'));
         }
     }
     if (is_null($r['headers'])) {
         $r['headers'] = array();
     }
     // WP allows passing in headers as a string, weirdly.
     if (!is_array($r['headers'])) {
         $processedHeaders = WP_Http::processHeaders($r['headers']);
         $r['headers'] = $processedHeaders['headers'];
     }
     // Setup arguments
     $headers = $r['headers'];
     $data = $r['body'];
     $type = $r['method'];
     $options = array('timeout' => $r['timeout'], 'useragent' => $r['user-agent'], 'blocking' => $r['blocking'], 'hooks' => new WP_HTTP_Requests_Hooks($url, $r));
     // Ensure redirects follow browser behaviour.
     $options['hooks']->register('requests.before_redirect', array(get_class(), 'browser_redirect_compatibility'));
     if ($r['stream']) {
         $options['filename'] = $r['filename'];
     }
     if (empty($r['redirection'])) {
         $options['follow_redirects'] = false;
     } else {
         $options['redirects'] = $r['redirection'];
     }
     // Use byte limit, if we can
     if (isset($r['limit_response_size'])) {
         $options['max_bytes'] = $r['limit_response_size'];
     }
     // If we've got cookies, use and convert them to Requests_Cookie.
     if (!empty($r['cookies'])) {
         $options['cookies'] = WP_Http::normalize_cookies($r['cookies']);
     }
     // SSL certificate handling
     if (!$r['sslverify']) {
         $options['verify'] = false;
         $options['verifyname'] = false;
     } else {
         $options['verify'] = $r['sslcertificates'];
     }
开发者ID:aaemnnosttv,项目名称:develop.git.wordpress.org,代码行数:67,代码来源:class-http.php

示例3: request


//.........这里部分代码省略.........
     // If streaming to a file open a file handle, and setup our curl streaming handler.
     if ($r['stream']) {
         if (!WP_DEBUG) {
             $this->stream_handle = @fopen($r['filename'], 'w+');
         } else {
             $this->stream_handle = fopen($r['filename'], 'w+');
         }
         if (!$this->stream_handle) {
             return new WP_Error('http_request_failed', sprintf(__('Could not open handle for fopen() to %s'), $r['filename']));
         }
     } else {
         $this->stream_handle = false;
     }
     if (!empty($r['headers'])) {
         // cURL expects full header strings in each element.
         $headers = array();
         foreach ($r['headers'] as $name => $value) {
             $headers[] = "{$name}: {$value}";
         }
         curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
     }
     if ($r['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);
     }
     /**
      * Fires before the cURL request is executed.
      *
      * Cookies are not currently handled by the HTTP API. This action allows
      * plugins to handle cookies themselves.
      *
      * @since 2.8.0
      *
      * @param resource &$handle The cURL handle returned by curl_init().
      * @param array    $r       The HTTP request arguments.
      * @param string   $url     The request URL.
      */
     do_action_ref_array('http_api_curl', array(&$handle, $r, $url));
     // We don't need to return the body, so don't. Just execute request and return.
     if (!$r['blocking']) {
         curl_exec($handle);
         if ($curl_error = curl_error($handle)) {
             curl_close($handle);
             return new WP_Error('http_request_failed', $curl_error);
         }
         if (in_array(curl_getinfo($handle, CURLINFO_HTTP_CODE), array(301, 302))) {
             curl_close($handle);
             return new WP_Error('http_request_failed', __('Too many redirects.'));
         }
         curl_close($handle);
         return array('headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array());
     }
     curl_exec($handle);
     $theHeaders = WP_Http::processHeaders($this->headers, $url);
     $theBody = $this->body;
     $bytes_written_total = $this->bytes_written_total;
     $this->headers = '';
     $this->body = '';
     $this->bytes_written_total = 0;
     $curl_error = curl_errno($handle);
     // If an error occurred, or, no response.
     if ($curl_error || 0 == strlen($theBody) && empty($theHeaders['headers'])) {
         if (CURLE_WRITE_ERROR == $curl_error) {
             if (!$this->max_body_length || $this->max_body_length != $bytes_written_total) {
                 if ($r['stream']) {
                     curl_close($handle);
                     fclose($this->stream_handle);
                     return new WP_Error('http_request_failed', __('Failed to write request to temporary file.'));
                 } else {
                     curl_close($handle);
                     return new WP_Error('http_request_failed', curl_error($handle));
                 }
             }
         } else {
             if ($curl_error = curl_error($handle)) {
                 curl_close($handle);
                 return new WP_Error('http_request_failed', $curl_error);
             }
         }
         if (in_array(curl_getinfo($handle, CURLINFO_HTTP_CODE), array(301, 302))) {
             curl_close($handle);
             return new WP_Error('http_request_failed', __('Too many redirects.'));
         }
     }
     curl_close($handle);
     if ($r['stream']) {
         fclose($this->stream_handle);
     }
     $response = array('headers' => $theHeaders['headers'], 'body' => null, 'response' => $theHeaders['response'], 'cookies' => $theHeaders['cookies'], 'filename' => $r['filename']);
     // Handle redirects.
     if (false !== ($redirect_response = WP_HTTP::handle_redirects($url, $r, $response))) {
         return $redirect_response;
     }
     if (true === $r['decompress'] && true === WP_Http_Encoding::should_decode($theHeaders['headers'])) {
         $theBody = WP_Http_Encoding::decompress($theBody);
     }
     $response['body'] = $theBody;
     return $response;
 }
开发者ID:awais300,项目名称:bds.dev,代码行数:101,代码来源:class-http.php

示例4: http

 /**
  * Make an HTTP request
  *
  * @return API results
  */
 function http($url, $method, $postfields = null, $multi = false)
 {
     if ($method == 'POST') {
         $multi = WP_Http::processHeaders($multi);
         $header = array("Content-Type" => "application/atom+xml");
         $header = array_merge($header, $multi['headers']);
     }
     $params = array("method" => $method, "body" => $postfields, "headers" => $header);
     return class_http($url, $params);
 }
开发者ID:liangwei1988,项目名称:wordpress,代码行数:15,代码来源:douban_OAuth.php

示例5: request


//.........这里部分代码省略.........
     }
     if (is_array($r['headers'])) {
         foreach ((array) $r['headers'] as $header => $headerValue) {
             $strHeaders .= $header . ': ' . $headerValue . "\r\n";
         }
     } else {
         $strHeaders .= $r['headers'];
     }
     if ($proxy->use_authentication()) {
         $strHeaders .= $proxy->authentication_header() . "\r\n";
     }
     $strHeaders .= "\r\n";
     if (!is_null($r['body'])) {
         $strHeaders .= $r['body'];
     }
     fwrite($handle, $strHeaders);
     if (!$r['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($r['limit_response_size'])) {
         $block_size = min($block_size, $r['limit_response_size']);
     }
     // If streaming to a file setup the file handle.
     if ($r['stream']) {
         if (!WP_DEBUG) {
             $stream_handle = @fopen($r['filename'], 'w+');
         } else {
             $stream_handle = fopen($r['filename'], 'w+');
         }
         if (!$stream_handle) {
             return new WP_Error('http_request_failed', sprintf(__('Could not open handle for fopen() to %s'), $r['filename']));
         }
         $bytes_written = 0;
         while (!feof($handle) && $keep_reading) {
             $block = fread($handle, $block_size);
             if (!$bodyStarted) {
                 $strResponse .= $block;
                 if (strpos($strResponse, "\r\n\r\n")) {
                     $process = WP_Http::processResponse($strResponse);
                     $bodyStarted = true;
                     $block = $process['body'];
                     unset($strResponse);
                     $process['body'] = '';
                 }
             }
             $this_block_size = strlen($block);
             if (isset($r['limit_response_size']) && $bytes_written + $this_block_size > $r['limit_response_size']) {
                 $this_block_size = $r['limit_response_size'] - $bytes_written;
                 $block = substr($block, 0, $this_block_size);
             }
             $bytes_written_to_file = fwrite($stream_handle, $block);
             if ($bytes_written_to_file != $this_block_size) {
                 fclose($handle);
                 fclose($stream_handle);
                 return new WP_Error('http_request_failed', __('Failed to write request to temporary file.'));
             }
             $bytes_written += $bytes_written_to_file;
             $keep_reading = !isset($r['limit_response_size']) || $bytes_written < $r['limit_response_size'];
         }
         fclose($stream_handle);
     } else {
         $header_length = 0;
         while (!feof($handle) && $keep_reading) {
             $block = fread($handle, $block_size);
             $strResponse .= $block;
             if (!$bodyStarted && strpos($strResponse, "\r\n\r\n")) {
                 $header_length = strpos($strResponse, "\r\n\r\n") + 4;
                 $bodyStarted = true;
             }
             $keep_reading = !$bodyStarted || !isset($r['limit_response_size']) || strlen($strResponse) < $header_length + $r['limit_response_size'];
         }
         $process = WP_Http::processResponse($strResponse);
         unset($strResponse);
     }
     fclose($handle);
     $arrHeaders = WP_Http::processHeaders($process['headers'], $url);
     $response = array('headers' => $arrHeaders['headers'], 'body' => null, 'response' => $arrHeaders['response'], 'cookies' => $arrHeaders['cookies'], 'filename' => $r['filename']);
     // Handle redirects.
     if (false !== ($redirect_response = WP_Http::handle_redirects($url, $r, $response))) {
         return $redirect_response;
     }
     // If the body was chunk encoded, then decode it.
     if (!empty($process['body']) && isset($arrHeaders['headers']['transfer-encoding']) && 'chunked' == $arrHeaders['headers']['transfer-encoding']) {
         $process['body'] = WP_Http::chunkTransferDecode($process['body']);
     }
     if (true === $r['decompress'] && true === WP_Http_Encoding::should_decode($arrHeaders['headers'])) {
         $process['body'] = WP_Http_Encoding::decompress($process['body']);
     }
     if (isset($r['limit_response_size']) && strlen($process['body']) > $r['limit_response_size']) {
         $process['body'] = substr($process['body'], 0, $r['limit_response_size']);
     }
     $response['body'] = $process['body'];
     return $response;
 }
开发者ID:qaryas,项目名称:qaryas_site,代码行数:101,代码来源:class-wp-http-streams.php

示例6: request


//.........这里部分代码省略.........
             curl_setopt($handle, CURLOPT_PROXY, $proxy->host());
             curl_setopt($handle, CURLOPT_PROXYPORT, $proxy->port());
         } else {
             curl_setopt($handle, CURLOPT_PROXY, $proxy->host() . ':' . $proxy->port());
         }
         if ($proxy->use_authentication()) {
             if ($isPHP5) {
                 curl_setopt($handle, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
             }
             curl_setopt($handle, CURLOPT_PROXYUSERPWD, $proxy->authentication());
         }
     }
     $is_local = isset($args['local']) && $args['local'];
     $ssl_verify = isset($args['sslverify']) && $args['sslverify'];
     if ($is_local) {
         $ssl_verify = apply_filters('https_local_ssl_verify', $ssl_verify);
     } elseif (!$is_local) {
         $ssl_verify = apply_filters('https_ssl_verify', $ssl_verify);
     }
     curl_setopt($handle, CURLOPT_URL, $url);
     curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, $ssl_verify);
     curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, $ssl_verify);
     curl_setopt($handle, CURLOPT_USERAGENT, $r['user-agent']);
     curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, $r['timeout']);
     curl_setopt($handle, CURLOPT_TIMEOUT, $r['timeout']);
     curl_setopt($handle, CURLOPT_MAXREDIRS, $r['redirection']);
     switch ($r['method']) {
         case 'HEAD':
             curl_setopt($handle, CURLOPT_NOBODY, true);
             break;
         case 'POST':
             curl_setopt($handle, CURLOPT_POST, true);
             curl_setopt($handle, CURLOPT_POSTFIELDS, $r['body']);
             break;
         case 'PUT':
             curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'PUT');
             curl_setopt($handle, CURLOPT_POSTFIELDS, $r['body']);
             break;
     }
     if (true === $r['blocking']) {
         curl_setopt($handle, CURLOPT_HEADER, true);
     } else {
         curl_setopt($handle, CURLOPT_HEADER, false);
     }
     // The option doesn't work with safe mode or when open_basedir is set.
     if (!ini_get('safe_mode') && !ini_get('open_basedir')) {
         curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
     }
     if (!empty($r['headers'])) {
         // cURL expects full header strings in each element
         $headers = array();
         foreach ($r['headers'] as $name => $value) {
             $headers[] = "{$name}: {$value}";
         }
         curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
     }
     if ($r['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);
     }
     // Cookies are not handled by the HTTP API currently. Allow for plugin authors to handle it
     // themselves... Although, it is somewhat pointless without some reference.
     do_action_ref_array('http_api_curl', array(&$handle));
     // We don't need to return the body, so don't. Just execute request and return.
     if (!$r['blocking']) {
         curl_exec($handle);
         curl_close($handle);
         return array('headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array());
     }
     $theResponse = curl_exec($handle);
     if (!empty($theResponse)) {
         $headerLength = curl_getinfo($handle, CURLINFO_HEADER_SIZE);
         $theHeaders = trim(substr($theResponse, 0, $headerLength));
         $theBody = substr($theResponse, $headerLength);
         if (false !== strrpos($theHeaders, "\r\n\r\n")) {
             $headerParts = explode("\r\n\r\n", $theHeaders);
             $theHeaders = $headerParts[count($headerParts) - 1];
         }
         $theHeaders = WP_Http::processHeaders($theHeaders);
     } else {
         if ($curl_error = curl_error($handle)) {
             return new WP_Error('http_request_failed', $curl_error);
         }
         if (in_array(curl_getinfo($handle, CURLINFO_HTTP_CODE), array(301, 302))) {
             return new WP_Error('http_request_failed', __('Too many redirects.'));
         }
         $theHeaders = array('headers' => array(), 'cookies' => array());
         $theBody = '';
     }
     $response = array();
     $response['code'] = curl_getinfo($handle, CURLINFO_HTTP_CODE);
     $response['message'] = get_status_header_desc($response['code']);
     curl_close($handle);
     if (true === $r['decompress'] && true === WP_Http_Encoding::should_decode($theHeaders['headers'])) {
         $theBody = WP_Http_Encoding::decompress($theBody);
     }
     return array('headers' => $theHeaders['headers'], 'body' => $theBody, 'response' => $response, 'cookies' => $theHeaders['cookies']);
 }
开发者ID:steveh,项目名称:wordpress,代码行数:101,代码来源:http.php

示例7: request

 /**
  * Send a HTTP request to a URI using cURL extension.
  *
  * @access public
  * @since 2.7.0
  *
  * @param string $url
  * @param str|array $args Optional. Override the defaults.
  * @return array 'headers', 'body', and 'response' keys.
  */
 function request($url, $args = array())
 {
     $defaults = array('method' => 'GET', 'timeout' => 5, 'redirection' => 5, 'httpversion' => '1.0', 'blocking' => true, 'headers' => array(), 'body' => null);
     $r = wp_parse_args($args, $defaults);
     if (isset($r['headers']['User-Agent'])) {
         $r['user-agent'] = $r['headers']['User-Agent'];
         unset($r['headers']['User-Agent']);
     } else {
         if (isset($r['headers']['user-agent'])) {
             $r['user-agent'] = $r['headers']['user-agent'];
             unset($r['headers']['user-agent']);
         }
     }
     // cURL extension will sometimes fail when the timeout is less than 1 as
     // it may round down to 0, which gives it unlimited timeout.
     if ($r['timeout'] > 0 && $r['timeout'] < 1) {
         $r['timeout'] = 1;
     }
     $handle = curl_init();
     curl_setopt($handle, CURLOPT_URL, $url);
     // The cURL extension requires that the option be set for the HEAD to
     // work properly.
     if ('HEAD' === $r['method']) {
         curl_setopt($handle, CURLOPT_NOBODY, true);
     }
     if (true === $r['blocking']) {
         curl_setopt($handle, CURLOPT_HEADER, true);
         curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);
     } else {
         curl_setopt($handle, CURLOPT_HEADER, false);
         curl_setopt($handle, CURLOPT_NOBODY, true);
         curl_setopt($handle, CURLOPT_RETURNTRANSFER, 0);
     }
     curl_setopt($handle, CURLOPT_USERAGENT, $r['user-agent']);
     curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 1);
     curl_setopt($handle, CURLOPT_TIMEOUT, $r['timeout']);
     curl_setopt($handle, CURLOPT_MAXREDIRS, $r['redirection']);
     // The option doesn't work with safe mode or when open_basedir is set.
     if (!ini_get('safe_mode') && !ini_get('open_basedir')) {
         curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
     }
     if (!is_null($r['headers'])) {
         curl_setopt($handle, CURLOPT_HTTPHEADER, $r['headers']);
     }
     if ($r['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);
     }
     // Cookies are not handled by the HTTP API currently. Allow for plugin
     // authors to handle it themselves... Although, it is somewhat pointless
     // without some reference.
     do_action_ref_array('http_api_curl', array(&$handle));
     // We don't need to return the body, so don't. Just execution request
     // and return.
     if (!$r['blocking']) {
         curl_exec($handle);
         curl_close($handle);
         return array('headers' => array(), 'body' => '', 'response' => array('code', 'message'));
     }
     $theResponse = curl_exec($handle);
     if (!empty($theResponse)) {
         $headerLength = curl_getinfo($handle, CURLINFO_HEADER_SIZE);
         $theHeaders = trim(substr($theResponse, 0, $headerLength));
         $theBody = substr($theResponse, $headerLength);
         if (false !== strrpos($theHeaders, "\r\n\r\n")) {
             $headerParts = explode("\r\n\r\n", $theHeaders);
             $theHeaders = $headerParts[count($headerParts) - 1];
         }
         $theHeaders = WP_Http::processHeaders($theHeaders);
     } else {
         if ($curl_error = curl_error($handle)) {
             return new WP_Error('http_request_failed', $curl_error);
         }
         if (in_array(curl_getinfo($handle, CURLINFO_HTTP_CODE), array(301, 302))) {
             return new WP_Error('http_request_failed', __('Too many redirects.'));
         }
         $theHeaders = array('headers' => array());
         $theBody = '';
     }
     $response = array();
     $response['code'] = curl_getinfo($handle, CURLINFO_HTTP_CODE);
     $response['message'] = get_status_header_desc($response['code']);
     curl_close($handle);
     if (true === $r['decompress'] && true === WP_Http_Encoding::should_decode($theHeaders)) {
         $theBody = WP_Http_Encoding::decompress($theBody);
     }
     return array('headers' => $theHeaders['headers'], 'body' => $theBody, 'response' => $response);
 }
开发者ID:blowery,项目名称:wordpress,代码行数:99,代码来源:http.php

示例8: request


//.........这里部分代码省略.........
     curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, $timeout);
     curl_setopt($handle, CURLOPT_TIMEOUT, $timeout);
     curl_setopt($handle, CURLOPT_URL, $url);
     curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, $ssl_verify === true ? 2 : false);
     curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, $ssl_verify);
     curl_setopt($handle, CURLOPT_USERAGENT, $r['user-agent']);
     curl_setopt($handle, CURLOPT_MAXREDIRS, $r['redirection']);
     switch ($r['method']) {
         case 'HEAD':
             curl_setopt($handle, CURLOPT_NOBODY, true);
             break;
         case 'POST':
             curl_setopt($handle, CURLOPT_POST, true);
             curl_setopt($handle, CURLOPT_POSTFIELDS, $r['body']);
             break;
         case 'PUT':
             curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'PUT');
             curl_setopt($handle, CURLOPT_POSTFIELDS, $r['body']);
             break;
     }
     if (true === $r['blocking']) {
         curl_setopt($handle, CURLOPT_HEADERFUNCTION, array(&$this, 'stream_headers'));
     }
     curl_setopt($handle, CURLOPT_HEADER, false);
     // If streaming to a file open a file handle, and setup our curl streaming handler
     if ($r['stream']) {
         if (!WP_DEBUG) {
             $stream_handle = @fopen($r['filename'], 'w+');
         } else {
             $stream_handle = fopen($r['filename'], 'w+');
         }
         if (!$stream_handle) {
             return new WP_Error('http_request_failed', sprintf(__('Could not open handle for fopen() to %s'), $r['filename']));
         }
         curl_setopt($handle, CURLOPT_FILE, $stream_handle);
     }
     // The option doesn't work with safe mode or when open_basedir is set.
     if (!ini_get('safe_mode') && !ini_get('open_basedir') && 0 !== $r['_redirection']) {
         curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
     }
     if (!empty($r['headers'])) {
         // cURL expects full header strings in each element
         $headers = array();
         foreach ($r['headers'] as $name => $value) {
             $headers[] = "{$name}: {$value}";
         }
         curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
     }
     if ($r['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);
     }
     // Cookies are not handled by the HTTP API currently. Allow for plugin authors to handle it
     // themselves... Although, it is somewhat pointless without some reference.
     do_action_ref_array('http_api_curl', array(&$handle));
     // We don't need to return the body, so don't. Just execute request and return.
     if (!$r['blocking']) {
         curl_exec($handle);
         curl_close($handle);
         return array('headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array());
     }
     $theResponse = curl_exec($handle);
     $theBody = '';
     $theHeaders = WP_Http::processHeaders($this->headers);
     if (strlen($theResponse) > 0 && !is_bool($theResponse)) {
         // is_bool: when using $args['stream'], curl_exec will return (bool)true
         $theBody = $theResponse;
     }
     // If no response, and It's not a HEAD request with valid headers returned
     if (0 == strlen($theResponse) && ('HEAD' != $args['method'] || empty($this->headers))) {
         if ($curl_error = curl_error($handle)) {
             return new WP_Error('http_request_failed', $curl_error);
         }
         if (in_array(curl_getinfo($handle, CURLINFO_HTTP_CODE), array(301, 302))) {
             return new WP_Error('http_request_failed', __('Too many redirects.'));
         }
     }
     unset($this->headers);
     $response = array();
     $response['code'] = curl_getinfo($handle, CURLINFO_HTTP_CODE);
     $response['message'] = get_status_header_desc($response['code']);
     curl_close($handle);
     if ($r['stream']) {
         fclose($stream_handle);
     }
     // See #11305 - When running under safe mode, redirection is disabled above. Handle it manually.
     if (!empty($theHeaders['headers']['location']) && (ini_get('safe_mode') || ini_get('open_basedir')) && 0 !== $r['_redirection']) {
         if ($r['redirection']-- > 0) {
             return $this->request($theHeaders['headers']['location'], $r);
         } else {
             return new WP_Error('http_request_failed', __('Too many redirects.'));
         }
     }
     if (true === $r['decompress'] && true === WP_Http_Encoding::should_decode($theHeaders['headers'])) {
         $theBody = WP_Http_Encoding::decompress($theBody);
     }
     return array('headers' => $theHeaders['headers'], 'body' => $theBody, 'response' => $response, 'cookies' => $theHeaders['cookies'], 'filename' => $r['filename']);
 }
开发者ID:vpatrinica,项目名称:jfdesign,代码行数:101,代码来源:class-http.php

示例9: fv_wp_flowplayer_check_files

function fv_wp_flowplayer_check_files()
{
    if (stripos($_SERVER['HTTP_REFERER'], home_url()) === 0) {
        global $wpdb;
        define('VIDEO_DIR', '/videos/');
        $bNotDone = false;
        $tStart = microtime(true);
        $tMax = @ini_get('max_execution_time') ? @ini_get('max_execution_time') - 5 : 25;
        $videos1 = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_type != 'revision' AND post_status != 'trash' AND post_content LIKE '%[flowplayer %'");
        $videos2 = $wpdb->get_results("SELECT ID, post_content FROM {$wpdb->posts} WHERE post_type != 'revision' AND post_status != 'trash' AND post_content LIKE '%[fvplayer %'");
        $videos = array_merge($videos1, $videos2);
        $source_servers = array();
        $shortcodes_count = 0;
        $src_count = 0;
        if (count($videos)) {
            foreach ($videos as $post) {
                $shortcodes_count += preg_match_all('!\\[(?:flowplayer|fvplayer)[^\\]]+\\]!', $post->post_content, $post_videos);
                if (count($post_videos[0])) {
                    foreach ($post_videos[0] as $post_video) {
                        $post_video = preg_replace('!popup=\'.*\'!', '', $post_video);
                        $src_count += preg_match_all('!(?:src|src1|src2|src3|mp4|webm|ogv)=[\'"](.*?(?:mp4|m4v))[\'"]!', $post_video, $sources1);
                        $src_count += preg_match_all('!(?:src|src1|src2|src3|mp4|webm|ogv)=([^\'"].*?(?:mp4|m4v|flv))[\\s\\]]!', $post_video, $sources2);
                        $sources = array_merge($sources1[1], $sources2[1]);
                        if (count($sources)) {
                            foreach ($sources as $src) {
                                if (strpos($src, '//') === 0) {
                                    $src = 'http:' . $src;
                                } else {
                                    if (strpos($src, '/') === 0) {
                                        $src = home_url() . $src;
                                    } else {
                                        if (!preg_match('!^\\S+://!', $src)) {
                                            $src = home_url() . VIDEO_DIR . $src;
                                        }
                                    }
                                }
                                $server = preg_replace('!(.*?//.*?)/.+!', '$1', $src);
                                $source_servers[$server][] = array('src' => $src, 'post_id' => $post->ID);
                            }
                        }
                    }
                }
            }
        }
        $ok = array();
        $errors = array();
        $count = 0;
        foreach ($source_servers as $server => $videos) {
            $tCurrent = microtime(true);
            if ($tCurrent - $tStart > $tMax) {
                $bNotDone = true;
                break;
            }
            if (stripos($videos[0]['src'], '.mp4') === FALSE) {
                continue;
            }
            global $FV_Player_Checker;
            if (stripos(trim($videos[0]['src']), 'rtmp://') === false) {
                list($header, $message_out) = $FV_Player_Checker->http_request(trim($videos[0]['src']), array('quick_check' => 10, 'size' => 65536));
                if ($header) {
                    $headers = WP_Http::processHeaders($header);
                    list($new_errors, $mime_type, $fatal) = $FV_Player_Checker->check_headers($headers, trim($videos[0]['src']), rand(0, 999), array('talk_bad_mime' => 'Server <code>' . $server . '</code> uses incorrect mime type for MP4 ', 'wrap' => false));
                    if ($fatal) {
                        continue;
                    }
                    if ($new_errors) {
                        $sPostsLinks = false;
                        foreach ($videos as $video) {
                            $sPostsLinks .= '<a href="' . home_url() . '?p=' . $video['post_id'] . '">' . $video['post_id'] . '</a> ';
                        }
                        $errors[] = implode(" ", $new_errors) . '(<a href="#" onclick="jQuery(\'#fv-flowplayer-warning-' . $count . '\').toggle(); return false">click to see a list of posts</a>) <div id="fv-flowplayer-warning-' . $count . '" style="display: none; ">' . $sPostsLinks . '</div>';
                        $count++;
                        continue;
                    } else {
                        $ok[] = 'Server <code>' . $server . '</code> appears to serve correct mime type <code>' . $mime_type . '</code> for MP4 videos.';
                    }
                }
            }
        }
        if ($bNotDone) {
            $ok[] = '<strong>Not all the servers were checked as you use a lot of them, increase your PHP execution time or check your other videos by hand.</strong>';
        }
        $output = array('errors' => $errors, 'ok' => $ok);
        echo '<FVFLOWPLAYER>' . json_encode($output) . '</FVFLOWPLAYER>';
        die;
    }
    die('-1');
}
开发者ID:ryan2407,项目名称:Vision,代码行数:88,代码来源:backend.php

示例10: check_mimetype

 public function check_mimetype($URLs = false, $meta = false)
 {
     add_action('http_api_curl', array('FV_Player_Checker', 'http_api_curl'));
     $tStart = microtime(true);
     global $fv_wp_flowplayer_ver, $fv_fp;
     if (!empty($meta)) {
         extract($meta, EXTR_SKIP);
     }
     if (defined('DOING_AJAX') && DOING_AJAX && isset($_POST['media']) && stripos($_SERVER['HTTP_REFERER'], home_url()) === 0) {
         $URLs = json_decode(stripslashes(trim($_POST['media'])));
     }
     if (isset($URLs)) {
         $all_sources = $URLs;
         foreach ($all_sources as $source) {
             if (preg_match('!^rtmp://!', $source, $match)) {
                 $found_rtmp = true;
             } else {
                 if (!isset($media) && !preg_match('!\\.(m3u8ALLOW|m3uALLOW|avi)$!', $source)) {
                     $media = $source;
                 }
             }
         }
         //$random = rand( 0, 10000 );
         $random = isset($_POST['hash']) ? trim($_POST['hash']) : false;
         if (isset($media)) {
             $remotefilename = $media;
             $remotefilename_encoded = flowplayer::get_encoded_url($remotefilename);
             if ($fv_fp->is_secure_amazon_s3($remotefilename_encoded) || 1 > 0) {
                 //	skip headers check for Amazon S3, as it's slow
                 $headers = false;
             } else {
                 $headers = wp_remote_head(trim(str_replace(' ', '%20', $remotefilename_encoded)), array('method' => 'GET', 'redirection' => 3));
             }
             $bValidFile = true;
             if (is_wp_error($headers)) {
                 $video_errors[] = 'Error checking ' . $media . '!<br />' . print_r($headers, true);
             } else {
                 if ($headers) {
                     list($aVideoErrors, $sContentType, $bFatal) = $this->check_headers($headers, $remotefilename, $random);
                     if ($bFatal) {
                         $bValidFile = false;
                     }
                     if ($aVideoErrors) {
                         $video_errors = array_merge($video_errors, $aVideoErrors);
                     }
                 }
                 if (function_exists('is_utf8') && is_utf8($remotefilename)) {
                     $video_errors[] = '<p><strong>UTF-8 error</strong>: Your file name is using non-latin characters, the file might not play in browsers using Flash for the video!</p>';
                 }
                 if (@ini_get('safe_mode')) {
                     $video_warnings[] = 'Detailed video check is not available with PHP Safe Mode On. Please contact your webhost support.';
                 } else {
                     if (!class_exists('getID3')) {
                         require ABSPATH . WPINC . '/ID3/getid3.php';
                     }
                     $getID3 = new getID3();
                     if (!function_exists('curl_init')) {
                         $video_errors[] = 'cURL for PHP not found, please contact your server administrator.';
                     } else {
                         $message = '<p>Analysis of <a class="bluelink" target="_blank" href="' . esc_attr($remotefilename_encoded) . '">' . $remotefilename_encoded . '</a></p>';
                         //	taken from: http://www.getid3.org/phpBB3/viewtopic.php?f=3&t=1141
                         $upload_dir = wp_upload_dir();
                         $localtempfilename = trailingslashit($upload_dir['basedir']) . 'fv_flowlayer_tmp_' . md5(rand(1, 999)) . '_' . basename(substr($remotefilename_encoded, 0, 32));
                         $out = fopen($localtempfilename, 'wb');
                         if ($out) {
                             $aArgs = array('file' => $localtempfilename);
                             if (!$this->is_cron) {
                                 $aArgs['quick_check'] = apply_filters('fv_flowplayer_checker_timeout_quick', 2);
                             }
                             list($header, $sHTTPError) = $this->http_request($remotefilename_encoded, $aArgs);
                             $video_errors = array();
                             if ($sHTTPError) {
                                 $video_errors[] = $sHTTPError;
                                 $bValidFile = false;
                             }
                             fclose($out);
                             if (!$headers) {
                                 $headers = WP_Http::processHeaders($header);
                                 list($aVideoErrors, $sContentType, $bFatal) = $this->check_headers($headers, $remotefilename, $random);
                                 if ($bFatal) {
                                     $bValidFile = false;
                                 }
                                 if ($aVideoErrors) {
                                     $video_errors = array_merge($video_errors, $aVideoErrors);
                                 }
                                 if (isset($hearders['headers']['server']) && $hearders['headers']['server'] == 'AmazonS3' && $headers['response']['code'] == '403') {
                                     $error = new SimpleXMLElement($body);
                                     if (stripos($error->Message, 'Request has expired') !== false) {
                                         $video_errors[] = '<p><strong>Amazon S3</strong>: Your secure link is expired, there might be problem with your Amazon S3 plugin. Please test if the above URL opens in your browser.</p>';
                                     } else {
                                         $video_errors[] = '<p><strong>Amazon S3</strong>: ' . $error->Message . '</p>';
                                     }
                                 }
                             }
                             if ($bValidFile) {
                                 $ThisFileInfo = $getID3->analyze($localtempfilename);
                             }
                             if (!@unlink($localtempfilename)) {
                                 $video_errors[] = 'Can\'t remove temporary file for video analysis in <tt>' . $localtempfilename . '</tt>!';
                             }
//.........这里部分代码省略.........
开发者ID:ryan2407,项目名称:Vision,代码行数:101,代码来源:checker.php

示例11: request

	/**
	 * Send a HTTP request to a URI using cURL extension.
	 *
	 * @access public
	 * @since 2.7
	 *
	 * @param string $url
	 * @param str|array $args Optional. Override the defaults.
	 * @return array 'headers', 'body', and 'response' keys.
	 */
	function request($url, $args = array()) {
		$defaults = array(
			'method' => 'GET', 'timeout' => 5,
			'redirection' => 5, 'httpversion' => '1.0',
			'blocking' => true,
			'headers' => array(), 'body' => null
		);

		$r = wp_parse_args( $args, $defaults );

		if ( isset($r['headers']['User-Agent']) ) {
			$r['user-agent'] = $r['headers']['User-Agent'];
			unset($r['headers']['User-Agent']);
		} else if( isset($r['headers']['user-agent']) ) {
			$r['user-agent'] = $r['headers']['user-agent'];
			unset($r['headers']['user-agent']);
		}

		// If timeout is a float less than 1, round it up to 1.
		if ( $r['timeout'] > 0 && $r['timeout'] < 1 )
			$r['timeout'] = 1;

		$handle = curl_init();
		curl_setopt( $handle, CURLOPT_URL, $url);

		if ( 'HEAD' === $r['method'] ) {
			curl_setopt( $handle, CURLOPT_NOBODY, true );
		}

		if ( true === $r['blocking'] ) {
			curl_setopt( $handle, CURLOPT_HEADER, true );
			curl_setopt( $handle, CURLOPT_RETURNTRANSFER, 1 );
		} else {
			curl_setopt( $handle, CURLOPT_HEADER, false );
			curl_setopt( $handle, CURLOPT_NOBODY, true );
			curl_setopt( $handle, CURLOPT_RETURNTRANSFER, 0 );
		}

		curl_setopt( $handle, CURLOPT_USERAGENT, $r['user-agent'] );
		curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, 1 );
		curl_setopt( $handle, CURLOPT_TIMEOUT, $r['timeout'] );
		curl_setopt( $handle, CURLOPT_MAXREDIRS, $r['redirection'] );

		if ( !ini_get('safe_mode') && !ini_get('open_basedir') )
			curl_setopt( $handle, CURLOPT_FOLLOWLOCATION, true );

		if( ! is_null($r['headers']) )
			curl_setopt( $handle, CURLOPT_HTTPHEADER, $r['headers'] );

		if ( $r['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 );

		if ( ! $r['blocking'] ) {
			curl_exec( $handle );
			curl_close( $handle );
			return array( 'headers' => array(), 'body' => '', 'response' => array('code', 'message') );
		}

		$theResponse = curl_exec( $handle );

		if ( !empty($theResponse) ) {
			$headerLength = curl_getinfo($handle, CURLINFO_HEADER_SIZE);
			$theHeaders = trim( substr($theResponse, 0, $headerLength) );
			$theBody = substr( $theResponse, $headerLength );
			if ( false !== strrpos($theHeaders, "\r\n\r\n") ) {
				$headerParts = explode("\r\n\r\n", $theHeaders);
				$theHeaders = $headerParts[ count($headerParts) -1 ];
			}
			$theHeaders = WP_Http::processHeaders($theHeaders);
		} else {
			if ( $curl_error = curl_error($handle) )
				return new WP_Error('http_request_failed', $curl_error);
			if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array(301, 302) ) )
				return new WP_Error('http_request_failed', __('Too many redirects.'));

			$theHeaders = array( 'headers' => array() );
			$theBody = '';
		}
		$response = array();
		$response['code'] = curl_getinfo( $handle, CURLINFO_HTTP_CODE );
		$response['message'] = get_status_header_desc($response['code']);

		curl_close( $handle );

		return array('headers' => $theHeaders['headers'], 'body' => $theBody, 'response' => $response);
	}
开发者ID:staylor,项目名称:develop.svn.wordpress.org,代码行数:98,代码来源:http.php


注:本文中的WP_Http::processHeaders方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。