1. 程式人生 > >php curl post請求返回400 bad request

php curl post請求返回400 bad request

  • php post請求返回400 bad request,程式碼如下:
/**
 * 模擬post進行url請求
 * @param string $url
 * @param array $post_data
 */
function request_post($url = '', $post_data = array()) {//url為必傳  如果該地址不需要引數就不傳
     if (empty($url)) {
         return false;
     }
     
    if(!empty($post_data)){
     $params = '';
      foreach ( $post_data as $k => $v ) 
      { 
          $params.= "$k=" . urlencode($v). "&" ;
         // $params.= "$k=" . $v. "&" ;
      }
      $params = substr($params,0,-1);
    } 
     $ch = curl_init();//初始化curl
     curl_setopt($ch, CURLOPT_URL,$url);//抓取指定網頁
     curl_setopt($ch, CURLOPT_HEADER, 0);//設定header
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求結果為字串且輸出到螢幕上
     curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
     if(!empty($post_data))curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
     $data = curl_exec($ch);//執行curl
     curl_close($ch);
     return $data;
}

  • 在windows上執行正常,在Linux上就一直報400,後來查到是 curl_setopt($ch, CURLOPT_POST, 1);這段程式碼的問題,可能是我的地址不用加請求引數,所以不用加這段程式碼。有這段程式碼,如果沒有請求引數在Linux上會返回400。