繁体   English   中英

如何从Google Endpoint方法内的HTTP Post请求中检索JSON?

[英]How to retrieve JSON from HTTP Post request inside Google Endpoint method?

我已按照设置进行操作,以将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方法中。

有什么建议么?

关于此的更新:

同时,借助http://www.jsonschema2pojo.org/ ,我能够获取与问题中提到的JSON数据相对应的Java类,并在Endpoint API中使用了它们。 现在工作正常!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM