2016-06-02 10 views
1

Ich versuche eine einfache Anwendung zu erstellen, in der Benutzer einen beliebigen Schlüssel eingeben und das System eine Anfrage senden wird. Ich möchte einige benutzerdefinierte Header zu dieser GET-Anfrage hinzufügen. In Plain Java verwende ich folgenden Code.Spring Integration: Hinzufügen von zusätzlichen Header-Parameter zu HTTP-ausgehende Anfrage.

URL url= new URL(CMRAuth.RESOURCE); 
     connection = (HttpURLConnection) url.openConnection(); 
     connection.setRequestMethod("GET"); 
     connection.setRequestProperty("Accept", "application/json"); 
     connection.setRequestProperty("OData-MaxVersion", "4.0"); 
     connection.setRequestProperty("OData-Version", "4.0"); 
     connection.addRequestProperty("Authorization", "Bearer "+cmrAuth.getAuthenticationResult().getAccessToken()); 
     System.out.println("code:"+connection.getResponseCode()); 

Und es funktioniert gut. Ich möchte dies mit Spring-Integration Outbound-Gateway tun. So sieht meine XML aus.

<int-stream:stdin-channel-adapter id="consoleIn" 
    channel="requestChannel"> 
    <int:poller fixed-delay="1000" max-messages-per-poll="1" /> 
</int-stream:stdin-channel-adapter> 
<int:channel id="requestChannel" /> 

<int:chain input-channel="requestChannel"> 
    <int-http:outbound-gateway 
     url="https://example.com" 
     expected-response-type="java.lang.String" http-method="GET"/> 
    <int:service-activator ref="accountResponseHandler" /> 
</int:chain> 

Ich will alles, diese zusätzlichen Header geben: Akzeptieren, OData-Version, Autorisierung usw. Wie das ist möglich.

Antwort

1

Sie müssen diese Header über <header-enricher> kurz vor der <int-http:outbound-gateway> konfigurieren. Vielleicht sogar in der gleichen <chain>.

Danach muss die <int-http:outbound-gateway> mit der header-mapper als Referenz auf DefaultHttpHeaderMapper.outboundMapper() Bean konfiguriert werden. Und dieser letzte muss mit den userDefinedHeaderPrefix = null und outboundHeaderNames mit allen gewünschten Kopfzeilen konfiguriert werden.

+0

Ich deklarierte außerhalb . Deshalb funktionierte es nicht. Vielen Dank –

Verwandte Themen