2014-03-18 21 views
1

我正在嘗試使用spring的resttemplate將一個大文件作爲輸入流轉發到另一個服務。我遵循了@artbristol在這個主題中給出的答案:How to forward large files with RestTemplate?Spring RestTemplate將大文件轉發到另一個服務

它看起來像是正確設置請求的正文(用charlesproxy抓取請求)。問題是,我還沒有正確設置的頭,因爲我相信我需要設置內容類型的multipart/FORMDATA,我試圖在回調中添加此:

request.getHeaders().setContentType(
       new MediaType("multipart", "form-data")); 

但在HTTP頭我仍然缺少邊界,不知道如何設置,我相信我可能會缺少一些其他設置。

回答

0

所以我才弄清楚了這一點。基本上我需要創建一個Spring消息轉換器,它將接收輸入流並寫入主體。我也基本上必須使用Form Message Converter來寫出響應主體。

所以在restTemplate中,我調用添加消息轉換器來添加新的輸入流消息轉換器。在回調函數中,我創建了一個多值映射,它接受一個字符串和inputstream並將其包裝在一個HttpEntity中。然後我創建一個Form消息轉換器的新實例,並調用write,傳入請求和mutlivaluemap。

+2

你的解釋似乎很清楚,但一些示例代碼將很長的路要走。 – Jonathan

0

看起來問題是我沒有在spark類路徑中包含htrace-core.jar的路徑: spark-shell --driver-class-path/opt/cloudera/parcels/CDH/lib /hbase/hbase-server.jar:/opt/cloudera/parcels/CDH/lib/hbase/hbase-protocol.jar:/opt/cloudera/parcels/CDH/lib/hbase/hbase-hadoop2-compat.jar:/選擇/ Cloudera的/包裹/ CDH/lib中/ HBase的/ HBase的-client.jar中:/opt/cloudera/parcels/CDH/lib/hbase/hbase-common.jar中:/ opt/Cloudera公司/包裹/ CDH/lib中/ HBase的/ LIB/HTRACE-core.jar添加:在/ etc/HBase的/ conf目錄

看起來這是新的火花1.x的

相關問題