ios - Xtify 有效负载 - 服务器错误

标签 ios push payload xtify

我正在尝试使用 xtify 向 Android 和 iOS 发送推送通知。我能够做到这一点,但是,有效负载信息似乎对我不起作用。如果我删除有效负载,请求会成功,但添加有效负载会导致服务器错误。谁能查看我发送的 json 并告诉我是否做错了什么?

{
   "apiKey":"...",
   "appKey":"...",
   "xids":[
      "..."
   ],
   "content":{
      "subject":"chat from billy bob",
      "message":"hey",
      "payload":{
         "UserId":"1",
         "DeviceId":"9"
      }
   }
}

这是服务器返回的错误: HTTP/1.1 500 内部服务器错误 日期:2012 年 5 月 30 日星期三 22:51:51 GMT 内容类型:text/html;charset=utf-8 内容长度:5839 连接:关闭

JBoss Web/2.1.3.GA - 错误报告

HTTP 状态 500 -

类型异常报告

< b>消息

描述 服务器遇到内部错误 (),导致其无法完成此请求。

异常

javax.servlet.ServletException: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.lang.String out of START_OBJECT token
at [Source: org.apache.catalina.connector.CoyoteInputStream@210c8d4e; line: 1, column: 199] (through reference chain: com.xtify.api.entities.PushRequest["content"]->com.xtify.api.entities.Content["payload"])
       com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:418)
       com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
       com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708)
       javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
       org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

根本原因

org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.lang.String out of START_OBJECT token
at [Source: org.apache.catalina.connector.CoyoteInputStream@210c8d4e; line: 1, column: 199] (through reference chain: com.xtify.api.entities.PushRequest["content"]->com.xtify.api.entities.Content["payload"])
       org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
       org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:219)
       org.codehaus.jackson.map.deser.std.StringDeserializer.deserialize(StringDeserializer.java:44)
       org.codehaus.jackson.map.deser.std.StringDeserializer.deserialize(StringDeserializer.java:13)
       org.codehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:299)
       org.codehaus.jackson.map.deser.SettableBeanProperty$MethodProperty.deserializeAndSet(SettableBeanProperty.java:414)
       org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:697)
       org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)
       org.codehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:299)
       org.codehaus.jackson.map.deser.SettableBeanProperty$MethodProperty.deserializeAndSet(SettableBeanProperty.java:414)
       org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:697)
       org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)
       org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2704)
       org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1315)
       org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:419)
       com.sun.jersey.json.impl.provider.entity.JacksonProviderProxy.readFrom(JacksonProviderProxy.java:139)
       com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:474)
       com.sun.jersey.server.impl.model.method.dispatch.EntityParamDispatchProvider$EntityInjectable.getValue(EntityParamDispatchProvider.java:123)
       com.sun.jersey.server.impl.inject.InjectableValuesProvider.getInjectableValues(InjectableValuesProvider.java:46)
       com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$EntityParamInInvoker.getParams(AbstractResourceMethodDispatchProvider.java:153)
       com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:203)
       com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
       com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
       com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
       com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
       com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
       com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1483)
       com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1414)
       com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1363)
       com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1353)
       com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:414)
       com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
       com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708)
       javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
       org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

注意 JBoss Web/2.1.3.GA 日志中提供了根本原因的完整堆栈跟踪。

JBoss Web/2.1.3.GA

最佳答案

元素类型是 JSON,而不是数组。因此有效负载元素应如下所示:

“有效负载”:“{'key1':'value1','key2':'value2'}”

尝试一下,让我知道效果如何。

迈克尔

关于ios - Xtify 有效负载 - 服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10825456/

相关文章:

ios - Swift - 使用多维数组中的多个部分填充 TableViews

ios - 现有应用在使用 Size Classes 时需要 UIScrollView

ios - 无法定位从 Nib 加载的自定义 View

ios - 如何找到 ImageView 的半径?

arrays - 如何在 typescript 中将数组插入另一个非空数组?如果需要的话加入

java - EWS 向无事件类型推送通知

git - 通过本地存在的非平凡 merge 提交重新定位到上游更改

java - 如何使用 jersey 和 json 在 java 中检索 Restful Web 服务的有效负载数据

带有图像的 iOS 推送通知,就像在 iMessage 中一样

javascript - 无法使用 Walmart API 更新提要