2013-05-17 74 views
0

我需要通過HTTP POST傳輸XML文件。可以將Mule配置爲執行此操作。我一直在嘗試一個簡單的流程,入站文件 - > outound HTTP,但它不工作。有沒有人有這方面的經驗?可以MULE從本地目錄通過HTTP發佈XML文件嗎?

<flow name="rpg_uploadFlow1" doc:name="rpg_uploadFlow1"> 
    <file:inbound-endpoint path="C:\Users\Claes\Documents\CD-utveckling\paper-rpg\OUT" moveToDirectory="C:\Users\Claes\Documents\CD-utveckling\paper-rpg\sent" responseTimeout="10000" mimeType="text/xml" doc:name="File"/> 
    <http:outbound-endpoint exchange-pattern="one-way" host="http://XXXXXXXXXXX.ashx?SystemName=XXXX&amp;UserName=XXXX&amp;PassWord=XXXXX" port="80" disableTransportTransformer="true" doc:name="HTTP"/> 

</flow> 

錯誤;

ERROR 2013-05-17 17:24:49,208 [[rpg_upload].connector.http.mule.default.dispatcher.07] org.mule.exception.DefaultMessagingExceptionStrategy: 

Message    : Failed to route event via endpoint: DefaultOutboundEndpoint{endpointUri=http://http://xxxxxxxxxxxxxxxx/rpgtest/service.ashx? SystemName=xxxxxxxxxxxxxxxxx&UserName=xxxxxxxxxxxxxxx&PassWord=xxxxxxx, connector=HttpConnector 
{ 
    name=connector.http.mule.default 
    lifecycle=start 
    this=18b44ce0 
    numberOfConcurrentTransactedReceivers=4 
    createMultipleTransactedReceivers=true 
    connected=true 
    supportedProtocols=[http] 
    serviceOverrides=<none> 
} 
,  name='endpoint.http.http.xxxxxxxxxxxxxxxx.service.ashx.SystemName.xxxxx.UserName.xxxxx.Pass  Word.836749.80', mep=ONE_WAY, properties={PassWord=836749:80, SystemName=xxxxxx,  UserName=xxxxxxxxx}, transactionConfig=Transaction{factory=null, action=INDIFFERENT, timeout=0}, deleteUnacceptedMessages=false, initialState=started, responseTimeout=10000, endpointEncoding=UTF-8, disableTransportTransformer=true}. Message payload is of type: ReceiverFileInputStream 
    Code     : MULE_ERROR-42999 
-------------------------------------------------------------------------------- 
Exception stack is: 
1. http (java.net.UnknownHostException) 
    java.net.AbstractPlainSocketImpl:-1 (null) 
2. Failed to route event via endpoint: DefaultOutboundEndpoint{endpointUri=http://http://xxxxxxxxxx.ashx? SystemName=xxxxxxxxxxxx&UserName=xxxxxx&PassWord=836749:80, connector=HttpConnector 
{ 
    name=connector.http.mule.default 
    lifecycle=start 
    this=18b44ce0  
    numberOfConcurrentTransactedReceivers=4 
    createMultipleTransactedReceivers=true 
    connected=true 
    supportedProtocols=[http] 
    serviceOverrides=<none> 
     } 
    ,  name='endpoint.http.http.xxxx.ashx.SystemName.xxxxxxxx.UserName.xxxxx.PassWord.836749.80',  mep=ONE_WAY, properties={PassWord=836749:80, SystemName=xxxxxxxxxx, UserName=xxxx}, transactionConfig=Transaction{factory=null, action=INDIFFERENT, timeout=0}, deleteUnacceptedMessages=false, initialState=started, responseTimeout=10000, endpointEncoding=UTF-8, disableTransportTransformer=true}. Message payload is of type: ReceiverFileInputStream (org.mule.api.transport.DispatchException) 
     org.mule.transport.http.HttpClientMessageDispatcher:155 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transport/DispatchExceptio n.html) 
     -------------------------------------------------------------------------------- 
     Root Exception stack trace: 
     java.net.UnknownHostException: http 
     at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
     at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything) 

+0

你可以發佈你的配置嗎? – Daniel

+0

嗨,丹尼爾,是的,現在我已經發布了這個流程。我認爲文件indound端點會將文件獲取到有效負載,然後出站端點會將其發佈? – user1912657

+0

發佈您在嘗試此操作時遇到的錯誤。 – user1760178

回答

1

,因爲它沿的FileReader作爲有效載荷,而不是實際的文本通過我曾在一些景點與文件端點麻煩。試着將文件添加到字符串轉換:

<flow name="rpg_uploadFlow1" doc:name="rpg_uploadFlow1"> 
    <file:inbound-endpoint path="C:\Users\Claes\Documents\CD-utveckling\paper-rpg\OUT" moveToDirectory="C:\Users\Claes\Documents\CD-utveckling\paper-rpg\sent" responseTimeout="10000" mimeType="text/xml" doc:name="File"/> 
    <file:file-to-string-transformer doc:name="File to String"/> 
    <http:outbound-endpoint exchange-pattern="one-way" host="http://XXXXXXXXXXX.ashx?SystemName=XXXX&amp;UserName=XXXX&amp;PassWord=XXXXX" port="80" disableTransportTransformer="true" doc:name="HTTP"/> 
</flow> 
+0

謝謝,這是神奇的!文件:文件到字符串轉換器是我需要的。感謝名單! – user1912657

1

你可以用騾子字節數組字符串轉換,使您的要求的字符串,然後將其發佈到你的HTTP出站。

<flow name="rpg_uploadFlow1" doc:name="rpg_uploadFlow1"> 
    <file:inbound-endpoint path="C:\Users\Claes\Documents\CD-utveckling\paper-rpg\OUT" moveToDirectory="C:\Users\Claes\Documents\CD-utveckling\paper-rpg\sent" responseTimeout="10000" mimeType="text/xml" doc:name="File"/> 

    <byte-array-to-string-transformer></byte-array-to-string-transformer> 
    ..... 

來到您的錯誤。我認爲它與騾標籤和端點無關。這是在訪問你正在嘗試的網址。

有關UnknownHostException的問題,請參閱下面的帖子。

java.net.UnknownHostException when accessing a URL

+0

我認爲這個錯誤來自於我寫了http://在調用中創建雙http:的url前面。感謝名單!/CLaes – user1912657

0

試試這個: 可以用騾子字節數組字符串轉換,讓您請求的文件作爲字符串,然後使用SetPayload或輔助連接,並張貼到HTTP出站。

+0

請在這裏發佈一些代碼 –