<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    yxhxj2006

    常用鏈接

    統計

    最新評論

    怎么用PHP發送HTTP請求(POST請求、GET請求)?

    /**
     * 發送post請求
     * 
    @param string $url 請求地址
     * 
    @param array $post_data post鍵值對數據
     * 
    @return string
     
    */
    function send_post($url, $post_data) {

        $postdata = http_build_query($post_data);
        $options = array(
            'http' =>; array(
                'method' =>; 'POST',
                'header' =>; 'Content-type:application/x-www-form-urlencoded',
                'content' =>; $postdata,
                'timeout' =>; 15 * 60 // 超時時間(單位:s)
            )
        );
        $context = stream_context_create($options);
        $result = file_get_contents($url, false, $context);

        return $result;
    }

    使用如下:
    post_data = array(
        'username' => 'stclair2201',
        'password' => 'handan'
    );
    send_post('http://blog.snsgou.com', $post_data);


    實戰經驗:

    當我利用上述代碼給另一臺服務器發送http請求時,發現,如果服務器處理請求時間過長,本地的PHP會中斷請求,即所謂的超時中斷,第一個懷疑的是PHP本身執行時間的超過限制,但想想也不應該,因為老早就按照這篇文章設置了“PHP執行時間限制”(【推薦】PHP上傳文件大小限制大全 ),仔細琢磨,想想,應該是http請求本身的一個時間限制,于是乎,就想到了怎么給http請求時間限制搞大一點。。。。。。查看PHP手冊,果真有個參數 “ timeout ”,默認不知道多大,當把它的值設大一點,問題得已解決


    Socket版本:

    /**
     * Socket版本
     * 使用方法:
     * $post_string = "app=socket&amp;version=beta";
     * request_by_socket('blog.snsgou.com', '/restServer.php', $post_string);
     
    */
    function request_by_socket($remote_server,$remote_path,$post_string,$port = 80,$timeout = 30) {
        $socket = fsockopen($remote_server, $port, $errno, $errstr, $timeout);
        if (!$socket) die("$errstr($errno)");
        fwrite($socket, "POST $remote_path HTTP/1.0");
        fwrite($socket, "User-Agent: Socket Example");
        fwrite($socket, "HOST: $remote_server");
        fwrite($socket, "Content-type: application/x-www-form-urlencoded");
        fwrite($socket, "Content-length: " . (strlen($post_string) + 8) . "");
        fwrite($socket, "Accept:*/*");
        fwrite($socket, "");
        fwrite($socket, "mypost=$post_string");
        fwrite($socket, "");
        $header = "";
        while ($str = trim(fgets($socket, 4096))) {
            $header .= $str;
        }

        $data = "";
        while (!feof($socket)) {
            $data .= fgets($socket, 4096);
        }

        return $data;
    }

    Curl版本:
    /**
     * Curl版本
     * 使用方法:
     * $post_string = "app=request&version=beta";
     * request_by_curl('
    http://blog.snsgou.com/restServer.php', $post_string);
     
    */
    function request_by_curl($remote_server, $post_string) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $remote_server);
        curl_setopt($ch, CURLOPT_POSTFIELDS, 'mypost=' . $post_string);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_USERAGENT, "snsgou.com's CURL Example beta");
        $data = curl_exec($ch);
        curl_close($ch);

        return $data;
    }

    Curl版本(2)

    /**
     * 發送HTTP請求
     *
     * 
    @param string $url 請求地址
     * 
    @param string $method 請求方式 GET/POST
     * 
    @param string $refererUrl 請求來源地址
     * 
    @param array $data 發送數據
     * 
    @param string $contentType 
     * 
    @param string $timeout
     * 
    @param string $proxy
     * 
    @return boolean
     
    */
    function send_request($url, $data, $refererUrl = '', $method = 'GET', $contentType = 'application/json', $timeout = 30, $proxy = false) {
        $ch = null;
        if('POST' === strtoupper($method)) {
            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_HEADER,0 );
            curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
            curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
            if ($refererUrl) {
                curl_setopt($ch, CURLOPT_REFERER, $refererUrl);
            }
            if($contentType) {
                curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:'.$contentType));
            }
            if(is_string($data)){
                curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
            } else {
                curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
            }
        } else if('GET' === strtoupper($method)) {
            if(is_string($data)) {
                $real_url = $url. (strpos($url, '?') === false ? '?' : ''). $data;
            } else {
                $real_url = $url. (strpos($url, '?') === false ? '?' : ''). http_build_query($data);
            }

            $ch = curl_init($real_url);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:'.$contentType));
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
            if ($refererUrl) {
                curl_setopt($ch, CURLOPT_REFERER, $refererUrl);
            }
        } else {
            $args = func_get_args();
            return false;
        }

        if($proxy) {
            curl_setopt($ch, CURLOPT_PROXY, $proxy);
        }
        $ret = curl_exec($ch);
        $info = curl_getinfo($ch);
        $contents = array(
                'httpInfo' => array(
                        'send' => $data,
                        'url' => $url,
                        'ret' => $ret,
                        'http' => $info,
                )
        );

        curl_close($ch);
        return $ret;
    }
    調用 WCF接口 的一個例子:$json = restRequest($r_url,'POST', json_encode($data));

    posted on 2014-12-31 18:57 奮斗成就男人 閱讀(483) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久免费美女视频| 亚洲13又紧又嫩又水多| 亚洲精品无码专区2| 亚洲一级片内射网站在线观看| 国产精品va无码免费麻豆 | 亚洲欧美国产精品专区久久| 激情内射亚洲一区二区三区爱妻| 亚洲欧洲国产综合AV无码久久 | 国产日韩AV免费无码一区二区三区| 国产色爽免费无码视频| 国内精自视频品线六区免费 | 国产在线精品一区免费香蕉| 69精品免费视频| 一级美国片免费看| 国产精品久久久久久久久久免费| 四虎影在线永久免费观看| 破了亲妺妺的处免费视频国产| 区久久AAA片69亚洲| 亚洲精品动漫免费二区| 99久久99热精品免费观看国产| 毛片在线全部免费观看| 在线观看亚洲免费| 亚洲国产精品xo在线观看| 韩日电影在线播放免费版| 日本高清免费不卡在线| wwwxxx亚洲| 亚洲精品免费网站| 亚洲综合激情六月婷婷在线观看| 久香草视频在线观看免费| 好男人视频在线观看免费看片 | 亚洲今日精彩视频| 免费一区二区三区| 亚洲精品国产品国语在线| 又长又大又粗又硬3p免费视频| sss日本免费完整版在线观看| 日韩视频免费在线观看| 在线亚洲人成电影网站色www | xxxxx做受大片视频免费| 亚洲精品第一国产综合境外资源| 亚洲精品乱码久久久久蜜桃| 毛片免费观看网址|