亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

【web開(kāi)發(fā)】php服務(wù)端提交post請(qǐng)求

AndroidTraveler / 756人閱讀

摘要:參見(jiàn)請(qǐng)求分析推測(cè)可能是對(duì)方服務(wù)器不接受這樣的吧或者對(duì)的不兼容

服務(wù)端常見(jiàn)的post提交有三種方式,這里主要記錄curl方式

1、服務(wù)端進(jìn)行http-post的三種方法 1.1 通過(guò)curl函數(shù)
function post($url, $post_data = "", $timeout = 5){//curl
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_POST, 1);
    if($post_data != ""){
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    }
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_HEADER, false);
    $file_contents = curl_exec($ch);
    curl_close($ch);
    return $file_contents;
}
1.2 通過(guò)Filesystem函數(shù)
function post2($url, $data)
{
    $postdata = http_build_query(
        $data
    );
    $opts = array(
        "http" => array(
                  "method"  => "POST",
                  "header"  => "Content-type: application/x-www-form-urlencoded",
                  "content" => $postdata
                ),
    );
    $context = stream_context_create($opts);

    $result = file_get_contents($url, false, $context);
 
    return $result;
}
1.3 借助網(wǎng)絡(luò)函數(shù)
fsockopen();
fwrite();
fread();
fclose();

以上三種方法源碼參考自:原文

2、我本地構(gòu)造的curl成功提交post 2.1 curl提交post源碼
    /**
     * [sendPostHttp]
     * @param  string  $url     提交地址,[schema://host:port]
     * @param  array   $params  需要通過(guò)post提交的數(shù)據(jù)
     * @param  integer $timeout 連接超時(shí)
     * @return mixed            提交狀態(tài)
     */
    static public function sendPostHttp($url, $params, $timeout = 5)
    {
        // 構(gòu)造post提交
        $ch = curl_init();
        $option = array(
            CURLOPT_URL         =>      $url,
            CURLOPT_CONNECTTIMEOUT      =>  $timeout,
            CURLOPT_SSL_VERIFYPEER      =>  false,
            CURLOPT_SSL_VERIFYHOST      =>  false,

            CURLOPT_HEADER      =>   false,
            CURLOPT_POST        =>   true,
            CURLOPT_POSTFIELDS  =>   http_build_query($params),
            CURLOPT_RETURNTRANSFER  =>  true,      
        );
        curl_setopt_array($ch, $option);

        // 提交post
        $ret = curl_exec($ch);
        if (false == $ret) {
            echo curl_error($ch);
        }

        curl_close($ch);
        return $ret;
    }
2.2 構(gòu)造請(qǐng)求中遇到的坑

1、構(gòu)造過(guò)程中參考了php手冊(cè)中的curl_setopt

所以首次嘗試時(shí),CURLOPT_POSTFIELDS的值用了數(shù)組:
CURLOPT_POSTFIELDS => $params
結(jié)果總是返回錯(cuò)誤信息:
Recv failure: Connection was reset
2、為什么會(huì)出現(xiàn)這樣的錯(cuò)誤呢?
我們注意到CURLOPT_POSTFIELDS說(shuō)明中如果value是數(shù)組,
Content-Type頭將會(huì)被設(shè)置成multipart/form-data
猜測(cè)原因就出在CURLOPT_POSTFIELDS的值上邊,所以將其傳值改為CURLOPT_POSTFIELDS => http_build_query($params),果然success!
參考:http_build_query構(gòu)造請(qǐng)求字符串

2.3 未解的疑問(wèn)

但是,為什么CURLOPT_POSTFIELDS會(huì)產(chǎn)生這樣影響呢?查了一下multipart/form-data,但是沒(méi)有得到具體原因。參見(jiàn)multipart/form-data請(qǐng)求分析

推測(cè)可能是對(duì)方服務(wù)器不接受這樣的Content-Type吧?
或者對(duì)multipart/form-data的不兼容?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/21927.html

相關(guān)文章

  • HTTP contentType

    摘要:規(guī)范把請(qǐng)求分為三個(gè)部分狀態(tài)行請(qǐng)求頭消息主體。消息主體最后以標(biāo)示結(jié)束。格式支持比鍵值對(duì)復(fù)雜得多的結(jié)構(gòu)化數(shù)據(jù),這一點(diǎn)也很有用。例如下面這段代碼最終發(fā)送的請(qǐng)求是這種方案,可以方便的提交復(fù)雜的結(jié)構(gòu)化數(shù)據(jù),特別適合的接口。 Content-Type HTTP 協(xié)議是以 ASCII 碼傳輸,建立在 TCP/IP 協(xié)議之上的應(yīng)用層規(guī)范。規(guī)范把 HTTP 請(qǐng)求分為三個(gè)部分:狀態(tài)行、請(qǐng)求頭、消息主體。類...

    beita 評(píng)論0 收藏0
  • ajax概述

    摘要:換一臺(tái)電腦就要重新安裝。并且還需要適配不同的系統(tǒng)。提交大小幾乎沒(méi)有限制。即協(xié)議主要由請(qǐng)求和響應(yīng)組成。相反則為同步按照程序的順序,依次往下執(zhí)行,必須等上一程序執(zhí)行完成之后才能執(zhí)行下一程序,阻礙程序的執(zhí)行。 Ajax 服務(wù)器 類型 按照服務(wù)類型:文件服務(wù)器,數(shù)據(jù)庫(kù)服務(wù)器,郵件服務(wù)器,Web服務(wù)器 按照操作系統(tǒng):Linux服務(wù)器,Windows服務(wù)器 按照應(yīng)用軟件:Apache服務(wù)器,Ng...

    Achilles 評(píng)論0 收藏0
  • JS基礎(chǔ)篇--JS之表單提交時(shí)編碼類型enctype詳解

    摘要:格式支持比鍵值對(duì)復(fù)雜得多的結(jié)構(gòu)化數(shù)據(jù),這一點(diǎn)也很有用。例如下面這段代碼最終發(fā)送的請(qǐng)求是這種方案,可以方便的提交復(fù)雜的結(jié)構(gòu)化數(shù)據(jù),特別適合的接口。 簡(jiǎn)介 form的enctype屬性為編碼方式,常用有兩種:application/x-www-form-urlencoded和multipart/form-data,默認(rèn)為application/x-www-form-urlencoded。 ...

    ad6623 評(píng)論0 收藏0
  • JavaScript 進(jìn)階知識(shí) - Ajax篇

    摘要:注意事項(xiàng)以下版本要設(shè)置默認(rèn)編碼,,否則程序可能無(wú)法正確顯示中文。組成部分協(xié)議是對(duì)請(qǐng)求和響應(yīng)的報(bào)文內(nèi)容進(jìn)行了約束和規(guī)范。請(qǐng)求報(bào)文請(qǐng)求是由客戶端發(fā)起,其規(guī)范格式為請(qǐng)求行請(qǐng)求頭請(qǐng)求主體。 showImg(https://segmentfault.com/img/remote/1460000013696283?w=1920&h=1080); Ajax 前言 前面我們已經(jīng)學(xué)習(xí)了js基礎(chǔ)知識(shí)和一些...

    Dongjie_Liu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<