如何在Google Endpoint方法中从HTTP Post请求中检索JSON



我已经按照设置将推送通知从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"
}

正在尝试使用我像这样定义的通知消息对象检索此数据:

public class NotificationMessage {
    JSONObject message;
    public JSONObject getMessage() {
        return message;
    }
    public void setMessage(JSONObject message) {
        this.message = message;
    }
}

我应该如何更改此类或更改我的终结点方法,以便从上述HTTP POST请求中检索一级更深的消息.data JSON值?

我已经检查了类似的问题,但没有找到任何显示如何检索嵌入在 POST 请求的 JSON 中的值,特别是在 Google Java 端点方法中。

有什么建议吗?

对此的更新:

同时,在 http://www.jsonschema2pojo.org/的帮助下,我能够获得与问题中提到的JSON数据相对应的Java类,并在端点API中使用了这些类。现在工作正常!

相关内容

最新更新