亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP curl以模擬put請求,后臺無法接受到數據是怎么回事?

PHP curl以模擬put請求,后臺無法接受到數據是怎么回事?

PHP
函數式編程 2019-03-05 23:27:25
我自己封裝了curl工具類,測試表現:get,post,delete方式后臺都能正確接收到前面傳的參數,但是put方式就是獲取不到參數.1.相關代碼: index.php 入口請求文件 require_once 'MyCurl.class.php'; $data = ['param' => '成功', 'param1' => '這是神馬']; $res = MyCurl::send('http://localhost/servername/admin/test/ceshi', $data, 'put'); MyCurl.class.php curl工具類文件 class MyCurl { private static $url = ''; //請求url private static $method = 'get'; //請求方式 private static $oriUrl = ''; //形式如 http://localhost private static $data = []; //請求參數 public static function send($url, $data = [], $method = 'get') { $url or die('url can\'t be null'); self::$url = $url; self::$method = strtoupper($method); $urlArr = parse_url($url); self::$oriUrl = $urlArr['scheme'] . '://' . $urlArr['host']; //形式為 http://localhost self::$data = $data; in_array(strtoupper(self::$method), array('GET', 'POST', 'PUT', 'DELETE')) or exit('error request method type!'); return self::doRequest(); } /** * 基礎發起curl請求函數 * @return boolean */ private static function doRequest() { $ch = curl_init(); //初始化curl curl_setopt($ch, CURLOPT_TIMEOUT, 30); //設置超時限制防止死循環 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); //設置發起連接前的等待時間,如果設置為0,則無限等待。 curl_setopt($ch, CURLOPT_URL, self::$url); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-HTTP-Method-Override:' . self::$method)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //為1:curl_exec()有返回值,為0:curl_exec()無返回值,直接輸出. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //4)"User-Agent: "頭的字符串。 curl_setopt($ch, CURLOPT_USERAGENT, 'SSTS Browser/1.0'); curl_setopt($ch, CURLOPT_ENCODING, 'gzip'); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)'); // 模擬用戶使用的瀏覽器 switch (self::$method) { case 'GET': break; case 'POST': curl_setopt($ch, CURLOPT_POST, true); //POST方式 break; case 'PUT': curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); //PUT方式 break; case 'DELETE': curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); //DELETE方式 break; default: die('error :no method type'); break; } if (self::$data) { if (self::$method == 'GET') { curl_setopt($ch, CURLOPT_URL, self::$url . '?' . http_build_query(self::$data)); } else { curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(self::$data)); } } else { self::$method != 'GET' && die('POST/PUT/DELETE請求需要參數'); } $data = curl_exec($ch); //運行curl if (!$data) { echo curl_error($ch); } curl_close($ch); return $data; } } 處理請求文件,基于tp3.2 <?php /** * 測試類 */ namespace Admin\Controller; use Think\Controller; class TestController extends Controller\RestController { public function ceshi() { $param = I('param.param'); echo '請求方法:'.$_SERVER['REQUEST_METHOD']; echo '請求方法:'.$this->_method.'<br/>'; echo '請求參數:'; echo $param; print_r($_REQUEST); parse_str(file_get_contents('php://input'), $data); print_r($data); $test= file_get_contents('php://input'); print_r($test); } } 無論怎么做都接收不了put請求方式傳送過來的參數,讓我很納悶,在這上面也糾結很久了.想請fault的網友們幫忙
查看完整描述

3 回答

?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

<div class="manual-right" style="top: 0">
            <div class="m-article">
                <div class="article-head">
                    <h1 id="title">
                        {:cookie('a_title')}
                    </h1>
                </div>
                <div class="article-wrap">
                    <div class="article-view">
                        <div class="view-body think-editor-content">
                            {:cookie('a_content')}
                        </div>
                    </div>
                </div>
                <div class="think-loading loading-ripple"><span class="loading-inner"><i class="loading-image"></i><b class="loading-text"></b></span></div>
            </div>
        </div>
查看完整回答
反對 回復 2019-03-18
?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

貼返回值, 或者你的服務器接受PUT方法?
curl有個debug參數, 設置, 看請求返回值.

查看完整回答
反對 回復 2019-03-18
  • 3 回答
  • 0 關注
  • 951 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號