2017-02-24 2 views

Antwort

0

Die HttpRequestExecutingMessageHandler tut dies:

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; 

Also, wenn Sie nicht über <int-http:outbound-channel-adapter> verwenden auf jeden Fall einige Antwort erhalten, und es wird sein, dass HttpHeaders.STATUS_CODE Header mit dem HttpStatus.NO_CONTENT als Wert.

Wie Sie die payload der Nachricht angezeigt wird, hängt von der httpResponse.hasBody() und ich denke, bei HttpStatus.NO_CONTENT gibt es wirklich keine body. Nutzlast ist also ein voller ResponseEntity.

Jetzt, bitte, teilen Sie mehr Informationen wie funktioniert es für Sie? Wie bekommen Sie eine nullpayload?

+0

Danke für die Antwort. Die UI-Schicht sucht nach der "responseXML" (d.h. 'XMLHttpRequest.responseXML'). Da es NULL wird, schlägt die UI-Ebene fehl. Ich habe sogar mit 'XMLHttpRequest.response' verifiziert, aber es ist auch null. BTW, verwende ich IE Browser. Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen. –

+0

Nun, Sie müssen mehr Config vom Controller zu diesem Gateway und zurück teilen. Ohne weitere Informationen ist nicht klar, welcher Schritt Ihnen helfen soll. Der Browser spielt hier keine Rolle –

+0

Sorry für die späte Antwort. Der Dienstanbieter hat einen Header Use-200-on-204-response bereitgestellt, mit dem 204 Antworten in 200 konvertiert werden. Es scheint jedoch, dass das Outbound-Gateway den benutzerdefinierten Header nicht akzeptiert. Ich setze den Header mit 'MessageBulider'. Fehle ich etwas in der Konfiguration? –

Verwandte Themen