91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php收不到參數如何解決

發布時間:2023-02-09 14:06:09 來源:億速云 閱讀:254 作者:iii 欄目:編程語言

這篇文章主要介紹“php收不到參數如何解決”,在日常操作中,相信很多人在php收不到參數如何解決問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”php收不到參數如何解決”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

php收不到參數的解決辦法:1、修改發送端代碼為“$data = array ('openid'  => "123",'keyword' => "321");$data = json_encode($data);...”;2、修改接收端代碼為“$obj=file_get_contents("php://input");$data=json_decode(...)”即可。

具體問題描述:

用thinkphp寫了一個接口。

在遠端用curl去調用接口,curl的寫法如下:

function curl($url,$method,$params,$auth){
    
    
    //初始化CURL句柄
    $curl = curl_init();
    
    curl_setopt($curl, CURLOPT_URL, $url);//設置請求的URL
    #curl_setopt($curl, CURLOPT_HEADER, false);// 不要http header 加快效率
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,1); //設為TRUE把curl_exec()結果轉化為字串,而不是直接輸出
    
    //SSL驗證
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);    // https請求時要設置為false 不驗證證書和hosts  FALSE 禁止 cURL 驗證對等證書(peer's certificate), 自cURL 7.10開始默認為 TRUE。從 cURL 7.10開始默認綁定安裝。
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);//檢查服務器SSL證書中是否存在一個公用名(common name)。
    
    $header[] = "Content-Type:application/json;charset=utf-8";
    if(!empty($header)){
        curl_setopt ( $curl, CURLOPT_HTTPHEADER, $header );//設置 HTTP 頭字段的數組。格式: array('Content-type: text/plain', 'Content-length: 100')
    }
    
    //請求時間
    $timeout = 30;
    curl_setopt ($curl, CURLOPT_CONNECTTIMEOUT, $timeout);//設置連接等待時間
    
    //不同請求方法的數據提交
    switch ($method){
        case "GET" :
            curl_setopt($curl, CURLOPT_HTTPGET, true);//TRUE 時會設置 HTTP 的 method 為 GET,由于默認是 GET,所以只有 method 被修改時才需要這個選項。
            break;
        case "POST":
            if(is_array($params)){
                $params = json_encode($params,320);
            }
            #curl_setopt($curl, CURLOPT_POST,true);//TRUE 時會發送 POST 請求,類型為:application/x-www-form-urlencoded,是 HTML 表單提交時最常見的一種。
            #curl_setopt($curl, CURLOPT_NOBODY, true);//TRUE 時將不輸出 BODY 部分。同時 Mehtod 變成了 HEAD。修改為 FALSE 時不會變成 GET。
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");//HTTP 請求時,使用自定義的 Method 來代替"GET"或"HEAD"。對 "DELETE" 或者其他更隱蔽的 HTTP 請求有用。 有效值如 "GET","POST","CONNECT"等等;
            //設置提交的信息
            curl_setopt($curl, CURLOPT_POSTFIELDS,$params);//全部數據使用HTTP協議中的 "POST" 操作來發送。
            break;
        case "PUT" :
            curl_setopt ($curl, CURLOPT_CUSTOMREQUEST, "PUT");
            curl_setopt($curl, CURLOPT_POSTFIELDS,json_encode($params,320));
            break;
        case "DELETE":
            curl_setopt ($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
            curl_setopt($curl, CURLOPT_POSTFIELDS,$params);
            break;
    }
    
    
    
    $data = curl_exec($curl);//執行預定義的CURL
    $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);//獲取http返回值,最后一個收到的HTTP代碼
    curl_close($curl);//關閉cURL會話
    $res = json_decode($data,true);
    
    return $res;
}

發現一個問題,就是post提交時,后臺無法接收到傳來的參數。

后臺接收:

  public function getUserById(){
       $custid = I("post.cust_uid");
        $companyId = I("post.company_id");
      
        $model = M('chatuser','snake_',$this->db);
      
        $mine = $model->field('username,avatar,sign,id')->where(['id'=>$custid])->find();
        $company = $model->field('username,avatar,sign,id')->where(['id'=>$companyId])->find();
        
            
        $return['mine'] =$mine;
        $return['company'] =$company;
        $return['status'] = 1;
       
     $this->ajaxReturn($return);
    }

各種調試后,發現header中的

$header[] = "Content-Type:application/json;charset=utf-8";

 if(is_array($params)){
               $params = json_encode($params,320);
           }

提交的是json型的數據,而用postman測試接口用body的form-data

正確解決方法的代碼如下:

//發送端
$data = array (
            'openid'  => "123",
            'keyword' => "321"
        );
        $data = json_encode($data);
        ...
        curl_setopt($curl, CURLOPT_POST, 1);   
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
//接受端
$obj = file_get_contents("php://input");
$data = json_decode($obj, true);

到此,關于“php收不到參數如何解決”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

金昌市| 灵武市| 澄迈县| 灯塔市| 哈尔滨市| 丰城市| 方山县| 车险| 邵东县| 泌阳县| 禄劝| 石渠县| 汝城县| 福安市| 玛曲县| 岗巴县| 林西县| 全南县| 杂多县| 循化| 永胜县| 海伦市| 德化县| 西乡县| 阳城县| 姜堰市| 同江市| 镇平县| 云阳县| 盐津县| 泸州市| 贡觉县| 东兴市| 会同县| 衢州市| 临漳县| 台东市| 宁陵县| 西贡区| 北海市| 黑龙江省|