1. 程式人生 > >php curl返回false----curl調用微信創建自定義菜單返回false

php curl返回false----curl調用微信創建自定義菜單返回false

php curl返回false curl函數

在調用微信公眾平臺的創建自定義菜單接口來創建自定義菜單時遇到一個大坑,php curl返回false一直無法調試通過,代碼如下:

> //創建菜單
public function menu_create($data){
$url =" https://api.weixin.qq.com/cgi-bin/menu/create?access_token={$this->get_access_token()}";
echo $url.‘----------<br>‘;

      return $this-&gt;https_request($url,$data);
  }
  //查詢菜單

封裝的curl請求函數:

/*
模擬發送get 和 post 請求
*/
public function https_request($url,$data=""){
//curl初始化
$ch=curl_init();
//設置傳輸地址
curl_setopt($ch,CURLOPT_URL,$url);
//以文件流形式返回數據
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//如有數據要發送,選用post方式提交
if($data){
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);

}
//發送請求,返回數據
$request =curl_exec($ch);
$arrTmp =json_decode($request,TRUE);
// $this->count =$this->count + 1;
// echo "<pre>";
// var_dump($arrTmp);
// echo "</pre>";
// echo $this->count.‘---------‘;
//關閉curl
curl_close($ch);
if(is_array($arrTmp)){
return $arrTmp;
}else{
return $request;
}
}

後比對了以前成功調試的代碼:

      $url =" https://api.weixin.qq.com/cgi-bin/menu/create?access_token={$this-&gt;get_access_token()}";

發現$url中鏈接字符串前多了一個空格!後來查證:在curl請求的url中包含了空格。註意,是包含了空格,也就是說在url的任何一個位置都不行。如果有則curl返回的結果就是false。然後我使用curl_error($ch)來獲取可視獲取的結果為string ""也就是空字符串。所以這個就有點兒難判斷了。最後發現是url中有了一個空格。
總結:使用curl來請求數據時curl的url地址中的任何地方不能有空格存在!

php curl返回false----curl調用微信創建自定義菜單返回false