遇到的问题
列表接口返回的http状态码为200,但response body 为空,且查看日志没有找到报错.
经过调试发现在类中的_getResponse
方法中,在执行
$res = json_encode($value, $option);
时返回为false.
通过打印json_last_error()
, 发现是因为传给json_encode()
方法的数组中包含有无穷大或者分母为0的这种非法值.
解决办法
json_encode()
方法可以传入 JSON_PARTIAL_OUTPUT_ON_ERROR
option 来将此类非法值强制转换成0
建议
在 _getResponse
方法的最后加上
if (JSON_ERROR_NONE !== json_last_error()) {
throw new \Exception(json_last_error_msg());
}
以便更好地定位错误.