2017-02-24 27 views

回答

0

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​​?

+0

感謝您的回覆。 UI層正在檢查'responseXML'(即'XMLHttpRequest.responseXML')。由於它變爲空,UI層失敗。我甚至用'XMLHttpRequest.response'驗證過,但它也是空的。順便說一句,我正在使用IE瀏覽器。如果您需要任何其他信息,請告訴我。 –

+0

那麼,你必須將更多的配置從控制器共享到這個網關並返回。沒有更多的信息,目前尚不清楚哪一步可以幫助你。瀏覽器在這裏並不重要 –

+0

對不起,延遲迴復。服務提供商已經提供了一個標題Use-200-on-204-response,其中204響應將被轉換爲200。但似乎出站網關不接受自定義標題。我正在使用'MessageBulider'設置標題。我錯過配置中的任何東西嗎? –

相關問題