JAVA后台进行推送时出现1003,但是相关参数已经设置

jpush
标签: #<Tag:0x00007fb82fcc8ff0>

(Joven) #1

你好,在使用java后台进行推送时,后台返回

    Error response from JPush server. Should review and fix it.  
HTTP Status: 400
Error Code: 1003 
Error Message: 'time_to_live' value is invalid. 
Msg ID: 0 result:null
json参数:
    {
"platform": "all",
"audience": {
"alias": [
"578fef192aaf4647a074c49819aeb81e"
]
},
"notification": {
"alert": "有新的作业,请及时完成"
},
"options": {
"sendno": 1256786560,
"override_msg_id": 1,
"time_to_live": 60,
"apns_production": false
}
}

time_to_live:已经设置,还是有这个问题,已经找了好久,请帮忙看一下json格式是否需要修改,谢谢了

java代码:

     PushPayload push = PushPayload.newBuilder().setPlatform(
        		Platform.all())
        		.setOptions(Options.newBuilder().setApnsProduction(false).setTimeToLive(60).setOverrideMsgId(1).build())
        		.setAudience(Audience.alias(alias))
        		.setNotification(Notification.alert(msg))
        		.build();
result = jpush.sendPush(push);

#2

根据当前参数判断有异常的是 “override_msg_id”: 1,

对于你不需要的字段,请删除,而不是随意传一个值。

提供你使用的 SDK 版本号,你请求后控制台打印的完整日志,包含你请求的 URL 和所有的参数与返回报错的信息


(Joven) #3

%E6%8D%95%E8%8E%B7
好的,我再试一下


(Joven) #4


所有的打印信息
刚才又试了一下

    {
"platform": "all",
"audience": {
"alias": [
"578fef192aaf4647a074c49819aeb81e"
]
},
"notification": {
"alert": "有新的作业,请及时完成"
},
"options": {
"sendno": 2045543409,
"time_to_live": 60,
"apns_production": false
}
}

还是不行


#5

你先更新下 Java SDK 再看下

使用 example 尝试

你控制台的日志里面没打印你具体的请求参数和 URL 地址,请提供下完整的


(Joven) #6

直接进行推送测试是可以的,我这边是在一个线程中进行推送,然后使用线程调用测试的推送方法,会出现一样的错误,在线程中调用是否还有什么参数需要设置的?


#7

极光的报错跟你实际传给极光的信息有关系,你传过来的数据是有非法的才会报错,跟你在哪里请求没有关系,需要检查的是你自己的代码,你的线程是否某些字段类型上的设置有异常,有引用什么文件之类的,编码和 json 类型的处理等等。


(Joven) #8

是这样子,直接用main方法进行调用,正常发送
我在服务中的线程请求,与main方法相同,参数也相同,但就会出现那个错误…


(Joven) #9


这是两次请求的参数。。。
一模一样 :sweat_smile:


#11

提供下你的 Appkey 、会报错的请求的时间点和返回报错的时间点,与请求的完整的内容。


(Joven) #12

那个时间点是什么?
appKey:8fed9b9273467a41f5f9f7e0
public static PushPayload buildPushObject_all_alias_alert(List alias) {
return PushPayload.newBuilder().setPlatform(Platform.all()).setAudience(Audience.alias(alias))
.setOptions(Options.newBuilder().setTimeToLive(60).build())
.setNotification(Notification.alert(ALERT)).build();
}
PushPayload payload = buildPushObject_all_alias_alert(alias);


(Joven) #13


这个请求时可以的,出现那个错误只有在本地执行会出现。。。


#14

你在你的线程中直接去掉 time to live 字段呢?如果不写,默认是保存 一天,你现在设置的是 60 秒


(Joven) #15

对,之前没有写,然后出现那个错。才加上的


(Joven) #16


这个是去掉了的


#17

你去掉了还是报错了,那应该是你自己的线程里面或引用的什么文件里面有一个默认的 time to live 值,类型和传值有问题导致的,导致你代码里面虽然没写,但实际传给极光的信息里面有这个值,且是非法的。


(Josh Lipan) #18

更新到最新版了吗,我这边用官网测试是正常的,不管是主线程还是子线程

18/08/17 16:24:13 DEBUG connection.NativeHttpClient: Send request - POST https://api.jpush.cn/v3/push
18/08/17 16:24:13 DEBUG connection.NativeHttpClient: Request Content - {"platform":["android","ios"],"audience":"all","notification":{"alert":"alert content","android":{"alert":"alert content","extras":{"test":"https://community.jiguang.cn/push"},"title":"Android Title"},"ios":{"alert":"alert content","extras":{"extra_key":"extra_value"},"badge":"+1","sound":""}},"options":{"sendno":2100541724,"time_to_live":60,"apns_production":true}}
18/08/17 16:24:14 DEBUG resp.ResponseWrapper: JPush API Rate Limiting params - quota:600, remaining:599, reset:60
18/08/17 16:24:14 DEBUG connection.NativeHttpClient: Succeed to get response OK - responseCode:200
18/08/17 16:24:14 DEBUG connection.NativeHttpClient: Response Content - {"sendno":"2100541724","msg_id":"2534507608"}
18/08/17 16:24:14 INFO examples.PushExample: Got result - {"msg_id":2534507608,"sendno":2100541724,"statusCode":0}
{"msg_id":2534507608,"sendno":2100541724,"statusCode":0}

(Josh Lipan) #19

还有建议把官方的log打开,或者你断点调试下,看最后传输的json是什么


(Joven) #20

好的,我在重新调试一下


(Joven) #21

调试了一下,拿到的
conn:sun.net.www.protocol.https.DelegateHttpsURLConnection:https://api.jpush.cn/v3/push
最后发送的content:
{“platform”:“all”,“audience”:{“alias”:[“578fef192aaf4647a074c49819aeb81e”]},“notification”:{“alert”:“有新的作业,请及时完成”},“options”:{“sendno”:374375315,“time_to_live”:864001,“apns_production”:false}}
报错的时候这里就拿到了400
%E6%8D%95%E8%8E%B7