2010-03-31 63 views
5

作爲我的Ant構建過程的一部分,我想通過HTTP Post將文件上傳到網絡服務器。 Ant只有一個HTTP獲取任務。但是,Ant Contrib似乎有一個HTTP Post任務。問題是它沒有任何基本認證(比如get)或者任何指定文件上傳的方法(儘管文檔說「rawFile」不是發行版的一部分)。http post with file for file upload

我的問題是:Ant Contrib的Post任務實際上是否支持我想要的,但以一種非顯而易見的方式(也許我必須手工完成)?或者有其他方法可以做到這一點嗎?

回答

6

使用通過ANT exec任務調用的curl程序。

對於捲曲的例子閱讀本answer

+0

這正是我所擔心的。我可以做到這一點,但這意味着必須安裝curl,這意味着您不能只從svn中取出build.xml並期望它能夠正常工作。 :( – paleozogt 2010-04-02 15:12:20

+0

我聽到你,*和*使你更加悲慘使用ANT插件並不能解決你的問題,除非你將第三方jar也提交到顛覆中:-( – 2010-04-05 11:08:38

0

有基於Jakarta Commons的HTTP客戶端一堆螞蟻任務:

http://fikin-ant-tasks.sourceforge.net/

還提供了HTTP POST任務與認證。

將exec與exec結合使用時,您將在java虛擬機之外打開一個新進程。如果可能,應避免使用IMO外部過程。

P.S. :如果使用基本身份驗證fikin螞蟻任務/ HTTP POST被打破 我寧願寫一個Java類,甚至我自己的任務與Jakarta Commons的,看到 jakarta commons http clientsample for basic authentication2

,因此它可能在同一個虛擬機的螞蟻運行或者也許在一個分叉的java程序
你會發現幾個例子與通過谷歌的Jakarta Commons HttpClient的文件上傳..

+0

我同意使用ant exec是醜陋的,而我但是,fikin ant任務在基本身份驗證中被破壞 – paleozogt 2010-04-14 19:36:10

+0

fikin的httpmpost任務似乎無法在多線程模式下工作,例如:threadCount = 5 in for任務 – 2011-01-04 04:00:23

0

有一個在Antelope一個HTTP POST任務,但它似乎不支持基本身份驗證。 :/

0

還有一個AntLib中的螞蟻沙盒here聲稱做HTTP獲取和發佈。但是,它的認證也被破壞了。

6

我創建了一個Apache 2.0許可,功能齊全,易於使用的螞蟻http任務。它利用代碼java.net。*類,並且沒有第三方庫依賴關係。

它可以通過文件或內聯實體進行POST/PUT,並且具有靈活的選項來設置所需的標題,驗證和狀態代碼檢查以防止意外結果的構建失敗。

http://missinglinkcode.wordpress.com/2011/03/15/apache-ant-http-task/

+0

糟糕,Alex>剛纔看到你的帖子在上面我發佈了我的提示Missing Link後,希望你不介意;-) – Rebse 2011-03-19 22:13:51

+0

在'PDF文件''關閉''標籤的例子''只是想你應該知道。 。試試吧:) :) – 2012-12-10 18:58:11

+0

是否可以命名一個實體?我試圖完成這樣的事情:'curl -u username -X PUT -F [email protected]//path/to/file.zip https:// some/api/foo/42'。目前我收到500錯誤,我認爲這是因爲實體沒有命名爲「文件」,這被列爲API的要求。有什麼建議? – 2012-12-10 19:09:14