2014-02-05 3 views
1

안녕하세요!HTTP 인바운드 끝점 전달 HTTP 아웃 바운드 끝점에서 HTTP 헤더

나는 Mule을 사용하여 웹 API에서 입력을 변환하고 웹 API에서 출력합니다. 나는 다음과 같은 흐름을 가지고 :

뮬 Studio의 출력은
<http:inbound-endpoint exchange-pattern="request-response" host="${webapi.host.server}" port="${webapi.host.port}" path="${webapi.getData.host.data.path}" doc:name="Incoming Requet" contentType="text/xml" mimeType="text/xml"/> 
<message-properties-transformer doc:name="Message Properties"> 
    <add-message-property key="Accept" value="application/json"/> 
</message-properties-transformer> 
<set-payload value="{ SortBy: &quot;LastModificationTimestamp&quot;, FirstResult: 1, ResultsToRetrieve: #[message.inboundProperties[&quot;count&quot;] ==null ? &quot;10&quot; : message.inboundProperties[&quot;count&quot;]] }" doc:name="Set FO Input (JSON)"/> 
<http:outbound-endpoint exchange-pattern="request-response" host="${dataSource.host.server}" port="${dataSource.host.port}" method="POST" doc:name="HTTP" contentType="application/json" password="${dataSource.host.password}" path="${dataSource.host.dataSource.path}" user="${dataSourceities.host.user}" responseTimeout="${dataSourceities.host.responseTimeout}"/> 
<json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object"/> 
<expression-component doc:name="Expression">message.payload = message.payload.Results</expression-component> 
<jdbc-ee:maps-to-xml-transformer doc:name="Maps to XML" mimeType="text/xml"/> 
<message-properties-transformer doc:name="Message Properties" scope="outbound"> 
    <delete-message-property key="Content-Type"/> 
    <delete-message-property key="Set-Cookie"/> 
</message-properties-transformer> 
<message-properties-transformer doc:name="Message Properties" scope="outbound"> 
    <add-message-property key="Content-Type" value="application/xml"/> 
</message-properties-transformer> 

:

INFO 2014-02-05 11:54:08,755 [[sbrowebsite].connector.http.mule.default.receiver.02] org.mule.transport.service.DefaultTransportServiceDescriptor: Loading default outbound transformer: org.mule.transport.http.transformers.ObjectToHttpClientMethodRequest 
INFO 2014-02-05 11:54:08,758 [[sbrowebsite].connector.http.mule.default.receiver.02] org.mule.transport.service.DefaultTransportServiceDescriptor: Loading default response transformer: org.mule.transport.http.transformers.MuleMessageToHttpResponse 
INFO 2014-02-05 11:54:08,758 [[sbrowebsite].connector.http.mule.default.receiver.02] org.mule.transport.service.DefaultTransportServiceDescriptor: Loading default outbound transformer: org.mule.transport.http.transformers.ObjectToHttpClientMethodRequest 
INFO 2014-02-05 11:54:08,758 [[sbrowebsite].connector.http.mule.default.receiver.02] org.mule.lifecycle.AbstractLifecycleManager: Initialising: 'connector.http.mule.default.dispatcher.2045317914'. Object is: HttpClientMessageDispatcher 
INFO 2014-02-05 11:54:08,760 [[sbrowebsite].connector.http.mule.default.receiver.02] org.mule.lifecycle.AbstractLifecycleManager: Starting: 'connector.http.mule.default.dispatcher.2045317914'. Object is: HttpClientMessageDispatcher 
INFO 2014-02-05 11:54:08,771 [[sbrowebsite].connector.http.mule.default.receiver.02] org.mule.transport.http.transformers.ObjectToHttpClientMethodRequest: Content-Type not set on outgoing request, defaulting to: text/plain 

을하지만! Fiddler를 사용하여 Mule을 호출하면 Mule에서 반환 한 헤더에는 아웃 바운드 호출에서 반환 된 모든 헤더가 포함됩니다. 특히, 두 개의 Set-Cookie 및 Content-Type. 분명히 결과는 application/xml이되고 싶습니다.

HTTP/1.1 200 OK 
Date: Wed, 05 Feb 2014 11:54:13 -0500 
Server: Mule EE Core Extensions/3.4.0 
Set-Cookie: Some-Cookie-From-the-Original-Web-API=chocolate-chip; Domain=localhost; Path=/ 
Set-Cookie: Other-Cookie-From-the-Original-Web-API=oatmeal-raisin; Domain=localhost; Path=/; Expires=Fri, 7-Feb-2014 16:54:08 GMT 
Content-Type: application/json 
X-MULE_SESSION: big-long-string 
X-MULE_ENCODING: utf-8 
Content-Length: 86952 
Connection: close 

질문 : 어떻게이 콘텐츠 형식이 경우 응용 프로그램/XML로받을 수 있나요? 추가 크레딧을 얻으려면 어떻게 다른 헤더를 빼낼 수 있습니까?

답변

0

이 문제를 재현하지 못하고 속성 변환기를 사용할 필요가 없습니다. Mule Studio 3.5.0을 사용 중이며 우편 배달부에서 테스트 중입니다. 오래된 Mule 버전을 사용하고 있다면 Mule 버전을 업데이트하고 Mule에 Content-Type 헤더/메시지를 기록하십시오. 밖으로 text/xml;charset=ISO-8859-1 최종 인쇄에

<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8080" path="test" doc:name="HTTP"/> 
<message-properties-transformer doc:name="Message Properties"> 
    <add-message-property key="Accept" value="application/json"/> 
</message-properties-transformer> 
<http:outbound-endpoint exchange-pattern="request-response" host="echo.jsontest.com" port="80" contentType="application/json" path="key/value/one/two" doc:name="HTTP"/> 
<json:json-to-object-transformer returnClass="java.util.HashMap" doc:name="JSON to Object"/> 
<jdbc-ee:maps-to-xml-transformer doc:name="Maps to XML" mimeType="text/xml"/> 
<logger message="#[header:OUTBOUND:Content-Type]" level="INFO" doc:name="Logger"/> 

로거하고도 우편 배달에 반환되는 것입니다 : 나는 다음과 같은 conf의 테스트.

관련 문제