2013-05-30 54 views
0

我正在寫一個路線,可能會收到一個TXT文件與一些參數使用駱駝Servlet組件。 根據Camel documentation我應該在消息的標題中設置參數。 但是在HTTP POST的情況下,似乎沒有按預期填充標頭。
我發現主體包含所有請求,文件和參數。Apache Camel:如何通過智能方式使用HTTP POST請求獲取發送給Camel Servlet的參數?

以下是內容的一個例子:

------WebKitFormBoundaryC9GDMXt2OAHARCZj 
Content-Disposition: form-data; name="upfile"; filename="user.txt" 
Content-Type: text/plain 
hello world... 
... 
------WebKitFormBoundaryC9GDMXt2OAHARCZj 
Content-Disposition: form-data; name="userdata" testtest 
------WebKitFormBoundaryC9GDMXt2OAHARCZj 
Content-Disposition: form-data; name="id" 12344 
------WebKitFormBoundaryC9GDMXt2OAHARCZj-- 

是否有人知道的方式通過一個巧妙的方法來獲取參數?
我必須在我的處理器中創建自己的解析器嗎?

回答

1

ericg,

如果使用HTTP POST,參數確實在郵件正文中設置。也許你應該在你的路線實現了處理器擺脫身體的參數和設置他們在交換頂部,如果它是你所需要的

最好的問候,

+0

是的,這是我最後做的。 – ericg

+0

@ericg你是怎麼做到的?看到我的問題在http://camel.465427.n5.nabble.com/Multipart-form-data-and-servlet-restlet-endpoint-td5758948.html#a5758976 – navaltiger

+0

@navaltiger我使用的是一個Tomcat容器。我構建了自己的解析器來解析主體。有關格式外觀[this]的更多信息(http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html)。 – ericg

1

在駱駝我們可以得到HTTP POST參數,我我不確定要獲得Content-Disposition。如果我們想獲得Content-Disposition,我們可以編寫自己的處理器方法。 但是確定可以獲取參數,你提到的正文內容就是你上傳的文件內容。

from(HTTP_INBOUND_URL) 
     .log("The message : ${in.body}") 
     .doTry() 
       .process(new Processor() { 
        @Override 
        public void process(Exchange exchange) throws Exception { 
         // TODO Auto-generated method stub 

         String templateId = exchange.getIn().getHeader("templateId", 
           String.class); 
} 
}) 

其中templateId是您的HTTP發佈參數。

相關問題