API响应因非法字符串偏移而失败,并包含未知字符

时间:2016-01-08 11:14:33

标签: php wechat

我正在使用overtrue/wechat开发wechat项目。

使用overtrue/wechat batchget API进行开发时,

mycode的:

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

它返回错误:

User.php line 103中的ErrorException:

Illegal string offset 'user_info_list'.

我检查了一些回复,然后我发现了一些未知的角色,如下面的图片(以崇高的方式打开)。但是其他答案是正确的。

enter image description here enter image description here

以下是微信batchGet API,推迟/微信的批处理功能旨在做以下事情:

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

POST数据:

{
    "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 line 116。也许我可以在这里传输格式? 但我不知道如何。

  

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

PS:我很抱歉有些文件是中文...

1 个答案:

答案 0 :(得分:1)

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

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

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