2012-09-22 103 views
1

有人能告訴我一個如何創建mule流向https服務發送請求的小例子嗎?我試圖做到這一點,但我得到了以下錯誤:Mule ESB:連接到https服務

INFO 2012-09-21 21:40:40,980 [[myapp_kareo].connector.http.mule.default.receiver.02] org.mule.transport.http.transformers.ObjectToHttpClientMethodRequest: Content-Type not set on outgoing request, defaulting to: text/plain 
WARN 2012-09-21 21:40:41,081 [[myapp_kareo].connector.http.mule.default.receiver.02] org.mule.transformer.simple.ObjectToString: Could not close stream 
java.io.IOException: Stream closed 
at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:145) 
at java.io.BufferedInputStream.read(BufferedInputStream.java:308) at org.apache.commons.httpclient.ContentLengthInputStream.read(ContentLengthInputStream.java:170) 

等等

我看至少2件奇怪的事情:

  • org.mule.transport.http.transformers.ObjectToHttpClientMethodRequest:內容類型未設置傳出的請求,默認爲:text/plain - 我不知道從哪裏得到這個,內容類型在所有端點上設置爲text/xml。
  • org.mule.transformer.simple.ObjectToString:無法關閉流 - 我無法解釋這個地方來自...

我的XML配置:

<?xml version="1.0" encoding="UTF-8"?> 
<https:connector name="HTTP_HTTPS" cookieSpec="netscape" validateConnections="true" sendBufferSize="0" receiveBufferSize="0" receiveBacklog="0" clientSoTimeout="10000" serverSoTimeout="10000" socketSoLinger="0" proxyHostname="localhost" proxyPort="80" doc:name="HTTP\HTTPS"> 
    <https:tls-key-store path="/src/main/app/keystore/javakeystore.jks" storePassword="somepassword"/> 
</https:connector> 
<flow name="KareoFlow1" doc:name="KareoFlow1"> 
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="kareo" contentType="text/xml" doc:name="SomeApp"/> 
    <https:outbound-endpoint exchange-pattern="request-response" host="webservice.kareo.com/" port="443" path="services/soap/2.1/KareoServices.svc" connector-ref="HTTP_HTTPS" contentType="text/xml" doc:name="Kareo"/> 
    <echo-component doc:name="Echo"/> 
</flow> 

非常感謝您!

+0

沒有足夠的信息:騾子的版本?組態?如何重現問題? –

+0

我只是將xml配置添加到問題中 –

回答

0

發送請求到HTTPS的一個簡單的例子如下: -

<https:connector name="httpsBSConnector" doc:name="HTTP\HTTPS" clientSoTimeout="10000" cookieSpec="netscape" proxyHostname="proxy-nc.abc.com" proxyPort="80" receiveBacklog="0" receiveBufferSize="0" sendBufferSize="0" serverSoTimeout="10000" socketSoLinger="0" validateConnections="true"> 
    <https:tls-key-store path="${keystore.path}" keyPassword="${keystore.password}" storePassword="${keystore.password}"/> 
    <https:tls-server path="${truststore.path}" storePassword="${truststore.password}"/> 
</https:connector> 

<https:outbound-endpoint address="https://${url}:${port}${path}" doc:name="getDataCall" exchange-pattern="request-response" method="POST" connector-ref="httpsBSConnector" />