国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 後端開發(fā) php教程 php http請求curl方法curl http getcurl php curopt httpheade

php http請求curl方法curl http getcurl php curopt httpheade

Jul 29, 2016 am 08:50 AM
curl http

<?php
/**
 * 
 * @brief http請求類
 *
 **/
class Activity_Http
{
    /**
     * Contains the last HTTP status code returned.
     */
    public $http_code;
    /**
     * Contains the last API call.
     */
    public $url;
    /**
     * Set up the API root URL.
     */
    public $host;
    /**
     * Set timeout default.
     */
    public $timeout = 10;
    /**
     * Set connect timeout.
     */
    public $connecttimeout = 10;
    /**
     * Respons format.
     */
    public $format = &#39;unknow&#39;;
    /**
     * Decode returned json data.
     */
    public $decode_json = TRUE;
    /**
     * Contains the last HTTP headers returned.
     */
    public $http_info;
    /**
     * print the debug info
     */
    public $debug = FALSE;
    /**
     * Verify SSL Cert.
     */
    public $ssl_verifypeer = FALSE;
    /**
     * Set the useragnet.
     */
    public $useragent = &#39;xxx&#39;;

    /**
     * 模擬Referer
     * @var url
     */
    public $referer;

    public $follow;

    /**
     * boundary of multipart
     * @ignore
     */
    public static $boundary = &#39;&#39;;

    public function __construct($host = &#39;&#39;)
    {
        $this->host = $host;
    }

    /**
     * GET wrappwer for request.
     *
     * @return mixed
     */
    function get($url, $parameters = array(), $headers = array(),$cookie = array()) {
        $response = $this->request($url, 'GET', $parameters, NULL, $headers,$cookie);
        if ($this->format === 'json' && $this->decode_json) {
            return json_decode($response, true);
        }
        return $response;
    }

    /**
     * POST wreapper for request.
     *
     * @return mixed
     */
    function post($url, $parameters = array(), $multi = false, $headers = array(),$cookie = array()) {
        $response = $this->request($url, 'POST', $parameters, $multi, $headers,$cookie );
        if ($this->format === 'json' && $this->decode_json) {
            return json_decode($response, true);
        }
        return $response;
    }

    /**
     * DELTE wrapper for oAuthReqeust.
     *
     * @return mixed
     */
    function delete($url, $parameters = array()) {
        $response = $this->request($url, 'DELETE', $parameters);
        if ($this->format === 'json' && $this->decode_json) {
            return json_decode($response, true);
        }
        return $response;
    }

    /**
     * Format and sign an OAuth / API request
     *
     * @return string
     * @ignore
     */
    function request($url, $method, $parameters, $multi = false, $headers = array(),$cookie = array()) {

        if (strrpos($url, 'http://') !== 0 && strrpos($url, 'https://') !== 0) {
            $url = "{$this->host}{$url}";
        }

        switch ($method) {
            case 'GET':
                $url .= strpos($url, '?') === false ? '?' : '';
                $url .= http_build_query($parameters);
                return $this->http($url, 'GET', null, $headers, $cookie);
            default:
                //$headers = array();
                $body = $parameters;
                if($multi)
                {
                    $body = self::build_http_query_multi($parameters);
                    $headers[] = "Content-Type: multipart/form-data; boundary=" . self::$boundary;
                }
                elseif(is_array($parameters) || is_object($parameters))
                {
					if(in_array('Content-Type: application/json',$headers) || in_array('Content-Type:application/json',$headers))
					{
						$body = json_encode($parameters);
					}
					else
					{
						$body = http_build_query($parameters);
					}
					
                }

                return $this->http($url, $method, $body, $headers, $cookie);
        }
    }

    /**
     * Make an HTTP request
     *
     * @return string API results
     * @ignore
     */
    function http($url, $method, $postfields = NULL, $headers = array() ,$cookie = array()) {
        $this->http_info = array();
        $ci = curl_init();
        /* Curl settings */
        curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
        curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent);
        curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout);
        curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout);
        curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ci, CURLOPT_ENCODING, "");
        curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer);
        curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader'));
        curl_setopt($ci, CURLOPT_HEADER, FALSE);

        switch ($method) {
            case 'POST':
                curl_setopt($ci, CURLOPT_POST, TRUE);
                if (!empty($postfields)) {
                    curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
                    $this->postdata = $postfields;
                }
                break;
            case 'DELETE':
                curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
                if (!empty($postfields)) {
                    $url = "{$url}?{$postfields}";
                }
        }

        $headers[] = "API-RemoteIP: " . $_SERVER['REMOTE_ADDR'];
        curl_setopt($ci, CURLOPT_URL, $url );
        curl_setopt($ci, CURLOPT_HTTPHEADER, $headers );
        curl_setopt($ci, CURLINFO_HEADER_OUT, TRUE );
        if($this->referer)
        {
            curl_setopt($ci, CURLOPT_REFERER, $this->referer);
        }
        if ($this->follow)
        {
            curl_setopt($ci, CURLOPT_FOLLOWLOCATION, 1);
        }
        
        if(!empty($cookie))
        {
        	$str = "";
        	foreach ($cookie as $key=>$value)
        	{
        		$str.="{$key}={$value};";
        	}
        	
        	$str = trim($str,';');
        	curl_setopt($ci, CURLOPT_COOKIE, $str);
        }

        $response = curl_exec($ci);
        $this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
        $this->http_info = array_merge($this->http_info, curl_getinfo($ci));
        
        if ($this->http_code != 200)
        {
        	throw new Exception(json_encode($this->http_info), $this->http_code);
        }
        
        
        $this->url = $url;

        curl_close ($ci);
        return $response;
    }

    /**
     * Get the header info to store.
     *
     * @return int
     * @ignore
     */
    function getHeader($ch, $header) {
        $i = strpos($header, ':');
        if (!empty($i)) {
            $key = str_replace('-', '_', strtolower(substr($header, 0, $i)));
            $value = trim(substr($header, $i + 2));
            $this->http_header[$key] = $value;
        }
        return strlen($header);
    }

    /**
     * 處理多媒體數(shù)據(jù)內(nèi)容
     * @ignore
     */
    public static function build_http_query_multi($params) {
        if (!$params) return '';

        uksort($params, 'strcmp');

        $pairs = array();

        self::$boundary = $boundary = uniqid('------------------');
        $MPboundary = '--'.$boundary;
        $endMPboundary = $MPboundary. '--';
        $multipartbody = '';

        foreach ($params as $parameter => $value) {

            if( in_array($parameter, array('pic', 'image','Filedata')) && $value{0} == '@' ) {
                $url = ltrim( $value, '@' );
                $content = file_get_contents( $url );
                $array = explode( '?', basename( $url ) );
                $filename = $array[0];

                $multipartbody .= $MPboundary . "\r\n";
                $multipartbody .= 'Content-Disposition: form-data; name="' . $parameter . '"; filename="' . $filename . '"'. "\r\n";
                $multipartbody .= "Content-Type: image/unknown\r\n\r\n";
                $multipartbody .= $content. "\r\n";
            } else {
                $multipartbody .= $MPboundary . "\r\n";
                $multipartbody .= 'content-disposition: form-data; name="' . $parameter . "\"\r\n\r\n";
                $multipartbody .= $value."\r\n";
            }

        }

        $multipartbody .= $endMPboundary;
        return $multipartbody;
    }
    
    
 	/**
     * 批量請求urlget
     * Enter description here ...
     * @param unknown_type $urls
     * @return array
     */
    public function batch_get($url_arr)
    {
	    $mh = curl_multi_init();
		foreach ($url_arr as $i => $url) 
		{
		     $conn[$i]=curl_init($url);
		     curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1);//設置返回do.php頁面輸出內(nèi)容
		     curl_multi_add_handle ($mh,$conn[$i]);//添加線程
		}
		
		
		do 
		{
		     $mrc = curl_multi_exec($mh,$active);
		} 
		while ($mrc == CURLM_CALL_MULTI_PERFORM);
		while ($active and $mrc == CURLM_OK) 
		{
	         if (curl_multi_select($mh) != -1) {
		         do 
		         {
		         	$mrc = curl_multi_exec($mh, $active);
		         }
		         while($mrc == CURLM_CALL_MULTI_PERFORM);
	         }
		}
		
		foreach ($url_arr as $i => $url) 
		{
			$res[$i]=curl_multi_getcontent($conn[$i]);//得到頁面輸入內(nèi)容
			curl_close($conn[$i]);
		}
		return $res;
    }
    
}

以上就介紹了php http請求 curl方法,包括了curl,http方面的內(nèi)容,希望對PHP教程有興趣的朋友有幫助。

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內(nèi)容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

http狀態(tài)碼520是什麼意思 http狀態(tài)碼520是什麼意思 Oct 13, 2023 pm 03:11 PM

http狀態(tài)碼520是指伺服器在處理請求時遇到了一個未知的錯誤,無法提供更具體的資訊。用於表示伺服器在處理請求時發(fā)生了一個未知的錯誤,可能是由於伺服器配置問題、網(wǎng)路問題或其他未知原因?qū)е碌?。通常是由伺服器配置問題、網(wǎng)路問題、伺服器過載或程式碼錯誤等原因?qū)е碌?。如果遇到狀態(tài)碼520錯誤,最好聯(lián)絡網(wǎng)站管理員或技術支援團隊以取得更多的資訊和協(xié)助。

Linux下更新curl版本教程! Linux下更新curl版本教程! Mar 07, 2024 am 08:30 AM

在Linux下更新curl版本,您可以按照以下步驟進行操作:檢查目前curl版本:首先,您需要確定目前系統(tǒng)中安裝的curl版本。開啟終端,並執(zhí)行以下指令:curl--version該指令將顯示目前curl的版本資訊。確認可用的curl版本:在更新curl之前,您需要確定可用的最新版本。您可以造訪curl的官方網(wǎng)站(curl.haxx.se)或相關的軟體來源,尋找最新版本的curl。下載curl原始碼:使用curl或瀏覽器,下載您選擇的curl版本的原始碼檔案(通常為.tar.gz或.tar.bz2

從頭到尾:如何使用php擴充cURL進行HTTP請求 從頭到尾:如何使用php擴充cURL進行HTTP請求 Jul 29, 2023 pm 05:07 PM

從頭到尾:如何使用php擴充cURL進行HTTP請求引言:在Web開發(fā)中,經(jīng)常需要與第三方API或其他遠端伺服器進行通訊。而使用cURL進行HTTP請求是一種常見且強大的方式。本文將介紹如何使用php擴充cURL來執(zhí)行HTTP請求,並提供一些實用的程式碼範例。一、準備工作首先,請確保php已安裝cURL擴充??梢栽诿盍袌?zhí)行php-m|grepcurl查

如何使用Nginx Proxy Manager實現(xiàn)HTTP到HTTPS的自動跳轉(zhuǎn) 如何使用Nginx Proxy Manager實現(xiàn)HTTP到HTTPS的自動跳轉(zhuǎn) Sep 26, 2023 am 11:19 AM

如何使用NginxProxyManager實現(xiàn)HTTP到HTTPS的自動跳轉(zhuǎn)隨著互聯(lián)網(wǎng)的發(fā)展,越來越多的網(wǎng)站開始採用HTTPS協(xié)議來加密傳輸數(shù)據(jù),以提高數(shù)據(jù)的安全性和用戶的隱私保護。由於HTTPS協(xié)定需要SSL憑證的支持,因此在部署HTTPS協(xié)定時需要有一定的技術支援。 Nginx是一款強大且常用的HTTP伺服器和反向代理伺服器,而NginxProxy

http狀態(tài)碼403是什麼 http狀態(tài)碼403是什麼 Oct 07, 2023 pm 02:04 PM

http狀態(tài)碼403是伺服器拒絕了客戶端的請求的意思。解決http狀態(tài)碼403的方法是:1、檢查身份驗證憑證,如果伺服器要求身份驗證,確保提供正確的憑證;2、檢查IP位址限制,如果伺服器對IP位址進行了限制,確??蛻舳说腎P位址被列入白名單或未列入黑名單;3、檢查文件權限設置,如果403狀態(tài)碼與文件或目錄的權限設置有關,確??蛻舳司哂凶銐虻臋嘞拊L問這些文件或目錄等等。

瞭解網(wǎng)頁重定向的常見應用場景並了解HTTP301狀態(tài)碼 瞭解網(wǎng)頁重定向的常見應用場景並了解HTTP301狀態(tài)碼 Feb 18, 2024 pm 08:41 PM

掌握HTTP301狀態(tài)碼的意思:網(wǎng)頁重定向的常見應用場景隨著網(wǎng)路的快速發(fā)展,人們對網(wǎng)頁互動的要求也越來越高。在網(wǎng)頁設計領域,網(wǎng)頁重定向是一種常見且重要的技術,透過HTTP301狀態(tài)碼來實現(xiàn)。本文將探討HTTP301狀態(tài)碼的意義以及在網(wǎng)頁重新導向中的常見應用場景。 HTTP301狀態(tài)碼是指永久重新導向(PermanentRedirect)。當伺服器接收到客戶端發(fā)

PHP Curl中如何處理網(wǎng)頁的 301 重定向? PHP Curl中如何處理網(wǎng)頁的 301 重定向? Mar 08, 2024 am 11:36 AM

PHPCurl中如何處理網(wǎng)頁的301重定向?使用PHPCurl發(fā)送網(wǎng)路請求時,常會遇到網(wǎng)頁回傳的301狀態(tài)碼,表示頁面被永久重定向。為了正確處理這種情況,我們需要在Curl請求中加入一些特定的選項和處理邏輯。以下將詳細介紹在PHPCurl中如何處理網(wǎng)頁的301重定向,並提供具體的程式碼範例。 301重定向處理原理301重定向是指伺服器回傳了一個30

HTTP 200 OK:了解成功回應的意義與用途 HTTP 200 OK:了解成功回應的意義與用途 Dec 26, 2023 am 10:25 AM

HTTP狀態(tài)碼200:探索成功回應的意義與用途HTTP狀態(tài)碼是用來表示伺服器回應狀態(tài)的數(shù)字代碼。其中,狀態(tài)碼200表示請求已成功被伺服器處理。本文將探討HTTP狀態(tài)碼200的具體意義與用途。首先,讓我們來了解HTTP狀態(tài)碼的分類。狀態(tài)碼分為五個類別,分別是1xx、2xx、3xx、4xx和5xx。其中,2xx表示成功的回應。而200是2xx中最常見的狀態(tài)碼

See all articles