当前位置: 首页 > 知识库问答 >
问题:

Google drive webhook通知请求正文为空

程胡非
2023-03-14

下面是在帐户的所有文件上配置监视的java代码

String uuid = UUID.randomUUID().toString(); 
                Channel channel = new Channel(); 
                channel.setId(uuid);
                channel.setType("web_hook");
                channel.setAddress(env.getProperty("webhookUrl"));
                StartPageToken pageToken = service.changes().getStartPageToken().execute();
                Channel response = service.changes().watch(pageToken.getStartPageToken(), channel).execute();

在实际的google驱动器中进行更改时,我会在上面配置的webhook url中得到通知。

但问题是,对于每一个更改,我都得到了与监视调用响应相同的以下头部的相同值&我没有得到与更改或请求正文对应的任何适当的请求头部

//Getting request headers
    String resourceId = request.getHeader("X-Goog-Resource-ID");
    String resourceState = request.getHeader("X-Goog-Resource-State");
    String expiration = request.getHeader("X-Goog-Channel-Expiration");
    String resourceChanges = request.getHeader("X-Goog-Changed");
    String channelId = request.getHeader("X-Goog-Channel-ID");

有人能告诉我如何正确获取通知数据吗?我做错什么了吗?

下面是另一个问题所述的相同问题,该问题没有正确的答案,但收到谷歌驱动器推送通知

共有1个答案

张心水
2023-03-14

实际上,没有在webhook通知中发送的请求正文。因此,当回调url中出现更改时,将通过对更改资源uri发出get请求来获取更改

Resource URI : https://www.googleapis.com/drive/v3/changes?includeRemoved=true&pageSize=100&pageToken=895&restrictToMyDrive=false&spaces=drive&alt=json

或者可以通过使用下面的代码获取编程更改

String pageToken = channelInfo.getCurrPageToken();
            List<Change> changes = service.changes().list(pageToken)
                    .execute().getChanges();

Google push notifications doc本可以清楚地提到这一点,而不是在请求正文中提到更改,这是造成混乱的原因

 类似资料:
  • 我已经使用spring编写了一个拦截器,它以preHandle方法从HTTPServletRequest读取请求正文。请求正文包含json。我还能够读取请求正文,但请求对象发生了一些事情,请求正文变得空白。正因为如此,这个请求正成为一个糟糕的请求。任何帮助都将不胜感激。提前谢谢。

  • 问题内容: 我正在尝试将JSON参数发送到我的服务器,并使用json.Decoder解析它们。我读到您应该能够从request.Body属性获取查询参数。以下是我的服务器代码: 每次,我都会看到(当然是不同的时间戳记)。我的客户端AJAX调用如下: 发送内容的示例URL: 更好看一下参数: 我已经尝试了GET和POST请求。 为什么我的req.Body从不解码?如果我尝试单独打印req.Body,

  • 虽然,如果我将链接插入浏览器,我将得到json格式。 这就是请求的工作结果 `

  • 当我向azure功能发送请求时,我收到以下异常: 内部异常系统。系统上已处理NullReferenceException。运行时。例外服务。例外DispatchInfo。投掷:在AlidaDutilities。OnUnzipHttpTriggered d__0。MoveNext(AlidaDutilities,版本=1.0.0.0,区域性=neutral,PublicKeyToken=NullAl

  • 问题内容: 我正在编写自己的logginMiddleware。基本上,我需要记录请求和响应的正文。我面临的问题是,当我阅读正文时,它变成空的,无法两次阅读。我知道发生这种情况是因为它属于ReadCloser类型。有没有一种方法可以将身体重绕到开始? 问题答案: 检查和嘲笑请求正文 初次阅读主体时,必须对其进行存储,以便在处理完该主体之后,可以将新的主体设置为根据原始数据构造的请求主体。因此,当您在

  • 我有一个配置了ElasticSearch的JHipster项目,我想使用“请求正文搜索”而不是“URI搜索”。 我只看到REST方法:“http://localhost:8080/api/_search/address/query=*“但我想发送一个主体json。 有办法做到这一点吗? 谢谢你!