2016-07-17 6 views
0

Ich habe eine Situation, eine <int-http:outbound-channel-adapter ... /> zu verwenden, um ein Objekt mit Informationen in der Kopfzeile gespeichert senden.Spring-Integration: Using Cusom-Header für http: Outbound-Kanal-Adapter

Werke nach, wenn ich die <int-http:inbound-channel-adapter ... /> nennen wie folgt:

public void openTicket(final Profile profile, final Ticket ticket) { 
    final HttpHeaders headers = new HttpHeaders(); 
    headers.set("profile", profile.toString()); 
    final HttpEntity<Ticket> entity = new HttpEntity<Ticket>(ticket, headers); 
    template.exchange(URL, HttpMethod.PUT, entity, Ticket.class); 
} 

Dies ruft mein inboung-Kanal-Adapter erfolgreich mit dem angegebenen Profil in den Headern:

<int-http:inbound-channel-adapter 
    channel="api_app_integration_request_channel" 
    supported-methods="PUT" 
    path="/process/ticket" 
    request-payload-type="*.model.Ticket" 
    mapped-request-headers="profile" 
    error-channel="internal-client-rest-ticket-error-channel" 
> 
    <int-http:request-mapping consumes="application/json" /> 
</int-http:inbound-channel-adapter> 

Was nicht funktioniert ruft der Dienst über Outbound-Channel-Adapter, der Anruf selbst funktioniert, aber mein Header 'Profil' ist weg.

<int-http:outbound-channel-adapter 
    channel="client_rest_ticket_outbound_channel" 
    http-method="PUT" 
    url="http://localhost:8080/process/ticket" 
    mapped-request-headers="profile" 
/> 

Ich bin mit Frühlings-Boot 1.3.6.RELEASE.

Antwort

1

Benutzerdefinierte Header werden standardmäßig (standardmäßig) mit einem Präfix X- zugeordnet; Um sie ohne das Präfix zuzuordnen, müssen Sie eine DefaultHttpHeaderMapper mit userDefinedHeaderPrefix auf Null (oder "") sowie die abgehenden Header-Namen, die Sie zuordnen möchten, verkabeln.

Siehe the documentation.

EDIT:

<bean class="org.springframework.integration.http.support.DefaultHttpHeaderMapper" id="headerMapper" 
    p:userDefinedHeaderPrefix="" 
    p:inboundHeaderNames="profile" 
    p:outboundHeaderNames="profile" 
/> 
+0

Hey Gary, vielen Dank für Ihre Antwort. Was gilt als gute Praxis? Ich denke, ich behalte "X-" vor. Wird es zum Markieren benutzerdefinierter Kopfzeilenschlüssel verwendet oder wie lautet der Mittelwert von "X-"? –

+0

Ich glaube, die ursprüngliche Absicht war, Kollisionen mit zukünftigen Standardüberschriften zu vermeiden. Ich glaube mich daran zu erinnern, dass der aktuelle Gedanke daran liegt, benutzerdefinierte Header nicht zu präfixieren, so dass wir daran denken, den Standard in 5.0 zu ändern. –

+0

Danke Gary, cos Ich kann Code in Kommentaren nicht formatieren Ich habe deine Antwort mit der Konfiguration bearbeitet, die ich gemacht habe. Hoffe, das ist in Ordnung –