Closed wyzhcn closed 7 years ago
看这信息,你的意思是在这种情况下 $body 的值是 null 吗?一般来讲处理不成功的时候都会有返回值的吧,请问你用的是那个 API 和什么情况下发生的这种错误
看我贴图中的body内容,应该是你们极光的api出现502的时候会这样
服务器挂了,直接由前端 nginx 返回了错误,这个还无法格式化,让我想想啊
@wyzhcn 当格式化 $body 之后,如果 $body 为 null 的话,就说明极光的服务器本身除了问题,那么在这种情况下
if(is_string($response['body'])) {
$this->code = ' ';
$this->message = $response['body'];
} else {
$body = json_decode($response['body'], true);
if (key_exists('error', $body)) {
$this->code = $body['error']['code'];
$this->message = $body['error']['message'];
} else {
$this->code = $body['code'];
$this->message = $body['message'];
}
}
这么处理你觉得如何呢
我觉得可以抛出一个 ServiceNotAvaliable 的异常,这样外部可以针对性的处理
你说的有点道理,但是这么做的话,每次请求 API 的时候就要多 try 一个异常了,还没有照顾到其他已写好的代码,并且按照现在的逻辑在异常中载抛一个异常感觉有点奇怪(那现在这个异常怎么办,除非去改动 http.php 这个文件,修改整个异常的逻辑,但是为了这个感觉有点不太值得)
现在就是已经在抛出异常了,只是抛得是ErrorException这个基础异常
现在是在异常对象构造函数里面,需要在这里之前变成 ServiceNotAvaliable,不过好像其实工作量也不大,我觉得你说的很有道理,就按照你说的办吧,发布版本之后我会在这里 @ 你
好的,感谢
出现这种问题是我们这边的失误才对
@wyzhcn 如果有空的话,可以帮我 review 一下 https://github.com/jpush/jpush-api-php-client/commit/64e6a24f842199b5d36068623dbd3f5e47edaa97
@wyzhcn hi,感谢你提出的问题,有一份好礼相送,希望提供email 地址,官方人员会联系你,或可加官方qq 1206559424,感谢~
@helperhaps 👍
@Lris12J 心领了
@wyzhcn 只求给出 review 意见,在线等:lol:
@helperhaps 没啥问题 后期可以考虑封装出一个Response类来处理,结构会更清晰
有些东西已经定型之后很难去修改的,所以我都想着,要不要在下班时间重新写一个第三方版本了
ps: github 今天不是很稳定啊
稳定更重要 😜
OK, 我去 release 一下,这个 issue 我就关了哈
key_exists() expects parameter 2 to be array, null given
trace 如下图