使用Spring SOAP解码202接受的响应

时间:2020-07-15 12:14:20

标签: java spring soap spring-ws

我正在尝试为现有服务编写Spring-WS客户端。端点提供了两个非常相似的动作,它们既消耗我的数据,又以简单的对象状态进行响应。我需要同时使用两者。不同之处在于,它们中的一个以HTTP状态代码200响应,另一个以202状态代码响应。在第一种情况下,状态对象已正确解码并从WebServiceTemplate.marshallSendAndReceive()返回,但在第二种情况下根本未解码,并且该方法返回null。

根据HTTP spec,HTTP状态202被接受,其目的是指示请求已被接收但尚未执行。但是,响应可能仍然包含有用的信息,例如当前请求状态或完成估算。我想得到这个回复。

我尝试调试确切的过程,并注意到我的程序在org.springframework.ws.transport.http.AbstractHttpSenderConnection.hasResponse()方法中执行了以下代码:

    protected final boolean hasResponse() throws IOException {
        int responseCode = getResponseCode();
        if (HttpTransportConstants.STATUS_ACCEPTED == responseCode ||
                HttpTransportConstants.STATUS_NO_CONTENT == responseCode) {
            return false;
        }
        ...
}

此代码片段似乎负责从未从202 Accepted响应中获取状态对象。 (或“ 204无内容”响应,但这显然是可以接受的。)

有没有解决的办法?似乎不可能在Bean中覆盖此方法,它标记为final

我能找到的最接近答案的是以下SWS JIRA ticket。自2012年8月起,它被标记为“已解决”,但实际上并没有,正如2015年的评论所说。

0 个答案:

没有答案
相关问题