REST API V3 发送推送有一定概率出现400错误

api
标签: #<Tag:0x00007fb83c952328>

(Zh) #1

后台推送,有一定几率出现异常,报错信息捕获如下:
ERROR com.zzw.community.util.push.JPush -JPush发送POST请求出现异常!java.io.IOException: Server returned HTTP response code: 400 for URL: https://api.jpush.cn/v3/push

1.查了相关帖子,请问如何正确捕获具体信息:
我们的捕获代码:
catch (Exception e) {
logger.error(“JPush发送POST请求出现异常!” + e);
e.printStackTrace();
}

2.同样的消息内容,有些可以有些不行。

望答复。


#2

400错误:错误的请求
该请求是无效的。相应的描述信息会说明原因
https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push/#_12

捕获exception,应具体打印出exception中的errorcode和errormessage信息

你可以对比一下两次情况不同的实际传递参数 有些什么不一样。


(Zh) #3

你好。
用的是https://api.jpush.cn/v3/push 接口
捕获改了一下:
} catch (Exception e) {
String eMsg = null;
if(e.getMessage()!=null){
eMsg = e.getMessage();
}else if(e.getLocalizedMessage()!=null){
eMsg = e.getLocalizedMessage();
}else if(e.getCause()!=null){
eMsg = e.getCause().getMessage();
}
logger.error(“JPush发送POST请求出现异常!” + (eMsg!=null?eMsg:e));
e.printStackTrace();

日志:
16:20:16.292 [taskExecutor-1] ERROR com.zzw.community.util.push.JPush -JPush发送POST请求出现异常!Server returned HTTP response code: 400 for URL: https://api.jpush.cn/v3/push

依旧没有获取到具体信息,请问怎么弄。


(Zh) #4

两次请求的数据格式是一样的,但是一条发的了一条发不出。

发不出:
16:32:17.960 [taskExecutor-3] INFO com.zzw.community.util.push.JPush -jpush push msg:{“platform”:[“android”],“audience”:{“alias”:[“2_3_7”]},“message”:{“msg_content”:“open door”,“extras”:{“i”:“72pZ”,“a”:“door”,“m”:“open”,“p”:“13631276694”}},“options”:{“time_to_live”:60,“apns_production”:true}}
16:32:18.098 [taskExecutor-3] ERROR com.zzw.community.util.push.JPush -JPush发送POST请求出现异常!Server returned HTTP response code: 400 for URL: https://api.jpush.cn/v3/push

正常发出:
16:34:33.773 [taskExecutor-2] INFO com.zzw.community.util.push.JPush -jpush push msg:{“platform”:[“android”],“audience”:{“alias”:[“c3d80cdc12d44766885fddcf7848dda1_1_0”]},“message”:{“msg_content”:“open door”,“extras”:{“i”:“ITYe”,“a”:“door”,“m”:“open”,“p”:“13395514886”}},“options”:{“time_to_live”:60,“apns_production”:true}}
16:34:33.924 [taskExecutor-2] INFO com.zzw.community.util.push.JPush -JPush push result:
{“sendno”:“0”,“msg_id”:“1019342217”}
16:34:33.925 [taskExecutor-2] INFO com.zzw.community.util.push.JPush -jpush push success

格式一样,正常发出的长度也比发不出的长,很纳闷,求解答。


#5

异常如何捕获的,参考官网demo,javasdk有提供源码和example

根据你别名不一样,猜测 是1011错误,即没有app设置过这个别名。 常见问题 - JPush 合集(持续更新)


(Zh) #6

我们没用SDK,用的是REST API。
应该是设置过的,确实有可能是客户端掉线了,但是这个掉线率越来越高,是极光的问题还是网络的问题?


#7

1011错误指的是 你推送消息的这一时刻 你这个别名没有app设置 ,即可能你们客户端在退出后置空了别名(以为了退出后不收到消息),这是你们客户端正常的需求,但是服务端就会出1011错误(如果你们别名是一一对应的话,唯一对应的那个置空了,那么别名就没有目标了。)

是让你参照异常捕获的例子,要捕获errorcode和errormessage


(Zh) #8

1.客户端重新登录,上线后也会有这个错误。
2.REST API,没有APIRequestException e


#9

首先说明,如果你不能捕获到具体的错误码,就没法具体给你分析问题。(我只是给你一个捕获的参照,具体你自己那边怎么做需要你自己思考)

根据现有的猜测 猜测是你们别名设置的问题。

那么请在客户端那边检查,出现错误的时候别名有没有设置成功:
方法一:日志里面是否有callback为0
方法二:在服务端直接针对设备的registrationID查他的别名: https://docs.jiguang.cn/jpush/server/push/rest_api_v3_device/#_1

如果你们在退出账号后 置空了别名 还调用了stoppush,那么重新开启客户端时,必须首先调用resumepush,然后初始化成功后设置别名。

以上的这些情况请自行检查。

另外,一般出现了1011错误也会有msgid返回的,像我给你的例子里面,会捕获到四个信息,其中就包含msgid,这也是你查询的依据(在极光官网历史那里也会看到这条1011错误的消息)