我已按照设置从Gmail API获取推送通知到我的应用程序,如下所示:https://developers.google.com/gmail/api/guides/push
我已经配置了如下所示的Google Endpoint方法,以便从Gmail接收HTTP POST回调(Webhook Push)。这是有效的,并在新电子邮件中被调用。
@ApiMethod(
name = "myhandler",
path = "_ah/push-handlers/myhandler",
httpMethod = ApiMethod.HttpMethod.POST
)
public void myhandler(NotificationMessage notificationMessage) throws IOException {
//process message
}
现在,来自Gmail的回调会在请求的HTTP POST正文中发送以下JSON结构:
POST https://yourserver.example.com/yourUrl
Content-type: application/json
{
message:
{
// This is the actual notification data, as base64url-encoded JSON.
data: "eyJlbWFpbEFkZHJlc3MiOiAidXNlckBleGFtcGxlLmNvbSIsICJoaXN0b3J5SWQiOiAiMTIzNDU2Nzg5MCJ9",
// This is a Cloud Pub/Sub message id, unrelated to Gmail messages.
message_id: "1234567890",
}
subscription: "projects/myproject/subscriptions/mysubscription"
}
我正在尝试使用我已定义的NotificationMessage对象检索此数据:
public class NotificationMessage {
JSONObject message;
public JSONObject getMessage() {
return message;
}
public void setMessage(JSONObject message) {
this.message = message;
}
}
我应该如何更改此类或更改我的Endpoint方法,以便从上面的HTTP POST请求中检索一级更深的message.data JSON值?
我已经查看了类似的问题,但未找到任何显示我如何检索POST请求的JSON中嵌入的值的信息,特别是在Google Java Endpoint方法中。
有什么建议吗?
答案 0 :(得分:0)
对此的更新:
同时,在http://www.jsonschema2pojo.org/的帮助下,我能够获得与问题中提到的JSON数据相对应的Java类,并在Endpoint API中使用了这些类。现在工作正常!