php http請求 curl方法 curl http get curl php curlopt httpheade

來源:互聯網
上載者:User
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);    }    /**     * 處理多媒體資料內容     * @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頁面輸出內容     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]);//得到頁面輸入內容curl_close($conn[$i]);}return $res;    }    }

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

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.