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

首頁(yè) 后端開發(fā) php教程 php http請(qǐng)求 curl方法 curl http get curl php curlopt httpheade

php http請(qǐng)求 curl方法 curl http get curl php curlopt httpheade

Jul 29, 2016 am 08:50 AM
curl http

<?php /**
 * 
 * @brief http請(qǐng)求類
 *
 **/
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;
    }
    
    
 	/**
     * 批量請(qǐng)求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);//設(shè)置返回do.php頁(yè)面輸出內(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]);//得到頁(yè)面輸入內(nèi)容
			curl_close($conn[$i]);
		}
		return $res;
    }
    
}

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

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

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

http狀態(tài)碼520是指服務(wù)器在處理請(qǐng)求時(shí)遇到了一個(gè)未知的錯(cuò)誤,無法提供更具體的信息。用于表示服務(wù)器在處理請(qǐng)求時(shí)發(fā)生了一個(gè)未知的錯(cuò)誤,可能是由于服務(wù)器配置問題、網(wǎng)絡(luò)問題或其他未知原因?qū)е碌?。通常是由服?wù)器配置問題、網(wǎng)絡(luò)問題、服務(wù)器過載或代碼錯(cuò)誤等原因?qū)е碌?。如果遇到狀態(tài)碼520錯(cuò)誤,最好聯(lián)系網(wǎng)站管理員或技術(shù)支持團(tuán)隊(duì)以獲取更多的信息和幫助。

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

在Linux下更新curl版本,您可以按照以下步驟進(jìn)行操作:檢查當(dāng)前curl版本:首先,您需要確定當(dāng)前系統(tǒng)中安裝的curl版本。打開終端,并執(zhí)行以下命令:curl--version該命令將顯示當(dāng)前curl的版本信息。確認(rèn)可用的curl版本:在更新curl之前,您需要確定可用的最新版本。您可以訪問curl的官方網(wǎng)站(curl.haxx.se)或相關(guān)的軟件源,查找最新版本的curl。下載curl源代碼:使用curl或?yàn)g覽器,下載您選擇的curl版本的源代碼文件(通常為.tar.gz或.tar.bz2

從頭到尾:如何使用php擴(kuò)展cURL進(jìn)行HTTP請(qǐng)求 從頭到尾:如何使用php擴(kuò)展cURL進(jìn)行HTTP請(qǐng)求 Jul 29, 2023 pm 05:07 PM

從頭到尾:如何使用php擴(kuò)展cURL進(jìn)行HTTP請(qǐng)求引言:在Web開發(fā)中,經(jīng)常需要與第三方API或其他遠(yuǎn)程服務(wù)器進(jìn)行通信。而使用cURL進(jìn)行HTTP請(qǐng)求是一種常見而強(qiáng)大的方式。本文將介紹如何使用php擴(kuò)展cURL來執(zhí)行HTTP請(qǐng)求,并提供一些實(shí)用的代碼示例。一、準(zhǔn)備工作首先,確保php已安裝cURL擴(kuò)展??梢栽诿钚袌?zhí)行php-m|grepcurl查

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

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

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

http狀態(tài)碼403是服務(wù)器拒絕了客戶端的請(qǐng)求的意思。解決http狀態(tài)碼403的方法是:1、檢查身份驗(yàn)證憑據(jù),如果服務(wù)器要求身份驗(yàn)證,確保提供正確的憑據(jù);2、檢查IP地址限制,如果服務(wù)器對(duì)IP地址進(jìn)行了限制,確保客戶端的IP地址被列入白名單或未列入黑名單;3、檢查文件權(quán)限設(shè)置,如果403狀態(tài)碼與文件或目錄的權(quán)限設(shè)置有關(guān),確??蛻舳司哂凶銐虻臋?quán)限訪問這些文件或目錄等等。

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

掌握HTTP301狀態(tài)碼的含義:網(wǎng)頁(yè)重定向的常見應(yīng)用場(chǎng)景隨著互聯(lián)網(wǎng)的迅猛發(fā)展,人們對(duì)網(wǎng)頁(yè)交互的要求也越來越高。在網(wǎng)頁(yè)設(shè)計(jì)領(lǐng)域,網(wǎng)頁(yè)重定向是一種常見且重要的技術(shù),通過HTTP301狀態(tài)碼來實(shí)現(xiàn)。本文將探討HTTP301狀態(tài)碼的含義以及在網(wǎng)頁(yè)重定向中的常見應(yīng)用場(chǎng)景。HTTP301狀態(tài)碼是指永久重定向(PermanentRedirect)。當(dāng)服務(wù)器接收到客戶端發(fā)

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

PHPCurl中如何處理網(wǎng)頁(yè)的301重定向?在使用PHPCurl發(fā)送網(wǎng)絡(luò)請(qǐng)求時(shí),時(shí)常會(huì)遇到網(wǎng)頁(yè)返回的301狀態(tài)碼,表示頁(yè)面被永久重定向。為了正確處理這種情況,我們需要在Curl請(qǐng)求中添加一些特定的選項(xiàng)和處理邏輯。下面將詳細(xì)介紹在PHPCurl中如何處理網(wǎng)頁(yè)的301重定向,并提供具體的代碼示例。301重定向處理原理301重定向是指服務(wù)器返回了一個(gè)30

HTTP 200 OK:了解成功響應(yīng)的含義與用途 HTTP 200 OK:了解成功響應(yīng)的含義與用途 Dec 26, 2023 am 10:25 AM

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

See all articles