Home  >  Article  >  Backend Development  >  php http request class

php http request class

不言
不言Original
2018-05-02 14:50:352184browse

This article mainly introduces the HTTP request class of PHP, which has certain reference value. Now I share it with everyone. Friends in need can refer to it

<?php
namespace app\lib;
class Lib_http{
//发起网络请求
    public function call($url, $args = null, $method = "post", $testflag = 0, $timeout = 60, $headers = array())
    {/*{{{*/
        Lib_log::set_log(&#39;http&#39;,$url);
        $ret = false;
        $i = 0;
        while ($ret === false) {
            if ($i > 1)
                break;
            if ($i > 0) { 
               sleep(1);
            }
            $ret = $this->callOnce($url, $args, $method, false, $timeout, $headers);
            $i++;
        }
        return $ret;
    }/*}}}*/
    private function callOnce($url, $args = null, $method = "post", $withCookie = false, $timeout = CURL_TIMEOUT, $headers = array())
    {/*{{{*/
        $ch = curl_init();
        if ($method == "post") {
            $data =$this->convert($args);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
            curl_setopt($ch, CURLOPT_POST, 1);
        } else {
            $data =$this->convert($args);
            if ($data) {
                if (stripos($url, "?") > 0) {
                    $url .= "&$data";
                } else {
                    $url .= "?$data";
                }
            }
        }
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
       // curl_setopt($ch, CURLOPT_HEADER, true);
        if (!empty($headers)) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        }
       if ($withCookie) {
            curl_setopt($ch, CURLOPT_COOKIEJAR, $_COOKIE);
        }
        $r = curl_exec($ch);
        curl_close($ch);
       return $r;
    }/*}}}*/
    private  function convert(&$args)
    {/*{{{*/
        $data = &#39;&#39;;
        if (is_array($args)) {
            foreach ($args as $key => $val) {
                if (is_array($val)) {
                    foreach ($val as $k => $v) {
                        $data .= $key . &#39;[&#39; . $k . &#39;]=&#39; . rawurlencode($v) . &#39;&&#39;;
                    }
                } else {
                    $data .= "$key=" . rawurlencode($val) . "&";
                }
            }
            return trim($data, "&");
        }        return $args;
    }/*}}}*/}

Related recommendations:

php http protocol post request parameter summary related information


The above is the detailed content of php http request class. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn