1

我正在使用overtrue/wechat开发一个微信项目。

使用overtrue/wechat batchget API开发时,

我的代码:

$usersInfo = array();
$usersInfo = $userService->batchGet($usingOpenids);

它返回错误:

User.php 第 103 行中的 ErrorException :

Illegal string offset 'user_info_list'.

我检查了一些回复,然后我发现了一些未知字符,如下图(用 sublime 打开)。但是其他回答是正确的。

在此处输入图像描述在此处输入图像描述


下面是微信batchGet API,overtrue/wechat的batchget函数旨在做以下事情:

HTTP POST: https ://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=ACCESS_TOKEN

发布数据:

{
    "user_list": [
        {
            "openid": "otvxTs4dckWG7imySrJd6jSi0CWE", 
            "lang": "zh-CN"
        }, 
        {
            "openid": "otvxTs_JZ6SEiP0imdhpi50fuSZg", 
            "lang": "zh-CN"
        }
    ]
}

响应数据:

{
   "user_info_list": [
       {
           "subscribe": 1, 
           "openid": "otvxTs4dckWG7imySrJd6jSi0CWE", 
           "nickname": "iWithery", 
           "sex": 1, 
           "language": "zh_CN", 
           "city": "Jieyang", 
           "province": "Guangdong", 
           "country": "China", 
           "headimgurl": "http://wx.qlogo.cn/mmopen/xbIQx1GRqdvyqkMMhEaGOX802l1CyqMJNgUzKP8MeAeHFicRDSnZH7FY4XB7p8XHXIf6uJA2SCunTPicGKezDC4saKISzRj3nz/0", 
           "subscribe_time": 1434093047, 
           "unionid": "oR5GjjgEhCMJFyzaVZdrxZ2zRRF4", 
           "remark": "", 
           "groupid": 0
       }, 
       {
           "subscribe": 0, 
           "openid": "otvxTs_JZ6SEiP0imdhpi50fuSZg", 
           "unionid": "oR5GjjjrbqBZbrnPwwmSxFukE41U", 
       }
   ]
}

那么我该怎么做才能避免这个错误呢?我想问题可能出在Http.php 第 116 行。也许我可以在这里传输格式?但我不知道怎么做。

$contents = json_decode($response['data'], true);


PS:对不起,有些文档是中文的...

4

1 回答 1

1

正如评论所说,这个错误意味着我使用字符串作为数组。所以我再次添加 json_decode 来格式化User.php中的响应。

    if(!is_array($response))
    {
        $response = json_decode($response, true);
    }

但是,仍然有一些让我感到困惑的事情。因为在Http.php中,已经使用了 json_decode 函数。现在我再次在User.php中使用 json_decode 。所以也许有更好的方法或其他问题。但是,这是解决它的一种方法。谢谢大家回答问题~

于 2016-01-10T02:17:34.640 回答