如何在 OData 响应 Olingo 中设置 cookie?

How to set a cookie in OData response Olingo?

我正在使用以下代码来 return 响应。我不知道我遗漏了什么,但是没有任何与在 OData 库中设置 cookie 相关的讨论。

ODataResponse resp = EntityProvider.writeFeed(contentType, entitySet, results, propertiesBuilder.build());

returned 响应没有任何可设置的 setter cookie/headers 大概是由于构建器模式。

在ODataResponseBuilder中,有一种方法可以设置headers

ODataResponse resp = resp.header("Set-Cookie", "sampleCookie="+cookieValue).build()

但在这种情况下,我不确定如何像 writeFeed 那样将 entitySet 设置为构建器。

关于HttpServletRequest,我可以通过ODataContext#getParameter(ODataContext.HTTP_SERVLET_REQUEST_OBJECT)获取它,但似乎没有等效的方法来获取响应object。

非常感谢任何帮助。

您可以使用 ODataResponse.fromResponse([来自 writeFeed 方法的响应])接收一个 ResponseBuilderInstance,它已经包含您输入的响应的内容。您可以在那里设置自定义 headers 和之后调用 build() 方法来接收最终的 ODataResponse,您可以在处理器中 return。

或者您使用 servletFilter 直接在 ServletResponse 中设置它们。我建议在 Olingo 中使用 fromResponse 方法。