php curl返回false----curl调用微信创建自定义菜单返回false

在调用微信公众平台的创建自定义菜单接口来创建自定义菜单时遇到一个大坑,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地址中的任何地方不能有空格存在!

原文地址:http://blog.51cto.com/13238147/2095414

时间: 2024-10-24 21:42:40

php curl返回false----curl调用微信创建自定义菜单返回false的相关文章

关于微信创建自定义菜单教训 {“errcode”:&quot;40016&quot;}

开发微信公众号时发生问题 接口详情:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013 json通过官方的接口调用工具返回: 200 OK Connection: keep-alive Date: Mon, 29 Oct 2018 07:27:41 GMT Content-Type: application/json; encoding=utf-8 Content-Length: 27 { "errcode&

开发者模式下创建自定义菜单返回{ &quot;errcode&quot;: -1, &quot;errmsg&quot;: &quot;system error&quot; }

1.首先请先排除你的json格式的正确,官方有校验工具,地址:http://mp.weixin.qq.com/debug 2.json正确的条件下,那么你需要注意的是后台的中文编码格式,菜单的名字必须使用utf8编码进行发送. 以下附带两种转码方式: request.setCharacterEncoding("UTF-8"); str = new String(str.getBytes("ISO8859-1"), "UTF-8"); 具体使用哪一

【微信公众平台开发】创建自定义菜单(四)

1.根据微信公众平台文档,得知创建自定义菜单有如下规则: a.目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单.一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以"..."代替.请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来.建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果. 注:所以最多只能创建15个功能菜单,多了就出错了! b. 目前自定义菜单接口可实现两种类型按钮,如下: click: 用户点击

.NET开发微信公众号之创建自定义菜单

一.简介 微信公众平台服务号以及之前成功申请内测资格的订阅号都具有自定义菜单的功能.开发者可利用该功能为公众账号的会话界面底部增加自定义菜单,用户点击菜单中的选项,可以调出相应的回复信息或网页链接.自定义菜单接口将为公众账号的信息展示空间提供更多可能性.本文将针对自定义菜单做简单的开发应用,以供读者参考. 二.官方说明 开发者获取使用凭证后,可以使用该凭证对公众账号的自定义菜单进行创建.查询和删除等操作. 自定义菜单接口可实现以下类型按钮: click(点击事件): 用户点击click类型按钮后

微信公众平台如何创建自定义菜单?

微信现在的功能越来越强大了,申请认证后的开发者能自定义菜单,用户直接点击微信界面下方的菜单,就能直接去到指定的页面,下面小编用[微信公众平台测试号]为大家演示一下怎么创建自定义菜单. 工具/原料 认证后的微信公众平台 微信公众平台切换开发者模式 方法/步骤 登录[微信公众平台],选择[功能]菜单下面的[高级功能],进入[开发模式]. 由于小编的微信公众平台还没通过认证,下面用[申请测试账户]为大家演示. 微信公众平台接口测试帐号申请,无需公众帐号.快速申请接口测试号,直接体验和测试公众平台所有高

微信公众号开发系列-开发模式创建自定义菜单

通过程序方式实现自定义菜单,通过http请求封装类交互微信自定义菜单接口 1.得到AccessToken access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效.由于获取access_token的api调用次数非常有限,建议开发者全局存储与更新access_token,频繁刷新access_token会导致api调用受限,影响自身业务. 请开发者

.NET微信公众号开发-2.0创建自定义菜单

一.前言 开发之前,我们需要阅读官方的接口说明文档,不得不吐槽一下,微信的这个官方文档真的很烂,但是,为了开发我们需要的功能,我们也不得不去看这些文档. 接口文档地址:http://mp.weixin.qq.com/wiki/13/43de8269be54a0a6f64413e4dfa94f39.html 看了这些个文档,基本意思明白了,就是我们把我们要创建的菜单创建好,post到微信的服务器上面,微信服务器然后给我们一些状态码,从而判断我们的菜单是否创建成功,只是在发送json数据以前我们要做

微信删除自定义菜单

使用接口创建自定义菜单后,开发者还可使用接口删除当前使用的自定义菜单. 删除菜单的接口如下: https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN 删除自定义菜单代码实现如下所示: $url = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=".$access_token; $result = https_request($

微信编辑自定义菜单

开发微信菜单栏除了使用微信编辑自定义菜单功能外,我们开发者还可以通过编写代码来自定义菜单. 首先在本地(或服务器下)编辑以下代码并运行(或者curl模拟请求) 说明 文件名为make_menu.php 1.点击我要预订,跳转到-页面 2.点击最新活动,显示二级菜单栏 3.点击神秘房客报名,请求配置文件,返回相应事件. <?php //微信公众平台appid和appsecret $appid = "你的appid"; $appsecret = "你的appsecret&q