0
我的int-http:outbound-gateway
正在返回「204無內容」。因此,我的UI層失敗,因爲它期望一個非空有效負載。在Spring集成中有沒有辦法處理這種情況?在Spring集成中處理「204無內容」
我的int-http:outbound-gateway
正在返回「204無內容」。因此,我的UI層失敗,因爲它期望一個非空有效負載。在Spring集成中有沒有辦法處理這種情況?在Spring集成中處理「204無內容」
的HttpRequestExecutingMessageHandler
做到這一點:
if (this.expectReply) {
...
AbstractIntegrationMessageBuilder<?> replyBuilder = null;
if (httpResponse.hasBody()) {
Object responseBody = httpResponse.getBody();
replyBuilder = (responseBody instanceof Message<?>) ?
this.getMessageBuilderFactory().fromMessage((Message<?>) responseBody) : this.getMessageBuilderFactory().withPayload(responseBody);
}
else {
replyBuilder = this.getMessageBuilderFactory().withPayload(httpResponse);
}
replyBuilder.setHeader(org.springframework.integration.http.HttpHeaders.STATUS_CODE, httpResponse.getStatusCode());
return replyBuilder.copyHeaders(headers).build();
}
return null;
所以,如果你不使用<int-http:outbound-channel-adapter>
你肯定得到一些答覆,會有那麼HttpHeaders.STATUS_CODE
頭與HttpStatus.NO_CONTENT
的價值。
正如您看到消息的取決於httpResponse.hasBody()
的,我想在HttpStatus.NO_CONTENT
情況下,確實沒有body
。所以,有效載荷是一個完整的ResponseEntity
。
現在,請分享更多信息它是如何爲您工作的?你如何獲得null
?
感謝您的回覆。 UI層正在檢查'responseXML'(即'XMLHttpRequest.responseXML')。由於它變爲空,UI層失敗。我甚至用'XMLHttpRequest.response'驗證過,但它也是空的。順便說一句,我正在使用IE瀏覽器。如果您需要任何其他信息,請告訴我。 –
那麼,你必須將更多的配置從控制器共享到這個網關並返回。沒有更多的信息,目前尚不清楚哪一步可以幫助你。瀏覽器在這裏並不重要 –
對不起,延遲迴復。服務提供商已經提供了一個標題Use-200-on-204-response,其中204響應將被轉換爲200。但似乎出站網關不接受自定義標題。我正在使用'MessageBulider'設置標題。我錯過配置中的任何東西嗎? –