【问题标题】:Raw HTTP request body in App Engine EndpointApp Engine Endpoint 中的原始 HTTP 请求正文
【发布时间】:2016-11-07 00:17:00
【问题描述】:

当直接调用此端点所在的 URL (https://<my app name>.appspot.com/_ah/api/endpoints/v1/test) 并提供正文时,我有兴趣获取到达我的端点的 HTTP POST 请求的原始正文。下面是成功调用的端点方法:

 @ApiMethod(name = "test", path = "test", httpMethod = ApiMethod.HttpMethod.POST)
public WrappedBoolean test(final HttpServletRequest request, ServletContext servletContext) throws Exception {

    //???
    return new WrappedBoolean(true); 
}

不幸的是,尝试从HttpServletRequest 检索InputStream 然后读取它,给我一个-1,这意味着所有数据都已被读取。这是有道理的,因为 App Engine 端点运行时很可能现在已经处理了请求。

有人知道如何获取发布到此端点的原始 POST 请求吗?

【问题讨论】:

    标签: http google-app-engine endpoint endpoints


    【解决方案1】:

    似乎没有办法轻松恢复原始消息。必须进行额外的操作——例如在请求前面放置一个过滤器、读取请求、将其保存在一个属性中并在端点调用期间获取该属性。所有这些都必须小心完成,以免弄乱 SPI 运行时(端点)管理的输入流,否则将不会调用端点。 总之,太麻烦了。我放弃了做一些端点真正不适合做的事情,而直接使用了一个 java Servlet。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 2011-04-18
      • 1970-01-01
      • 2011-07-02
      • 2015-10-19
      • 2021-12-23
      • 2012-10-26
      相关资源
      最近更新 更多