2012-03-12 62 views
1

我正在向使用澤西REST的服務器添加一個新的函數。我想以二進制形式發佈數據。我只是說:Jersey中的InputStream REST只返回一個字節

@POST 
@Path('/mypath') 
public void Foo(@QueryParam("var"), InputStream is) { 
    int data[8]; 
    data[0] = is.read(); 
    data[1] = is.read(); 
}  

然後我運行下面的命令:

cat test.bin | curl -X POST -H 'Content-type:image/jpeg' -d @- http://localhost:8080/path/mypath?var=ok 

當我通過調試步驟的第一個字節確實是test.bin的第一個字節。但是,第二次讀取返回-1,表示該流沒有更多數據。我錯誤地使用curl?我需要做哪些提供者的其他設置?其他配置參數?看起來我不需要@Consumes("*/*"),因爲它應該是默認的。

回答

3

根據文檔,也許你應該使用--data-binary而不是-d(這是--data-ascii的別名)嚴格的二進制數據。

另外,您也可以使用來代替使用該文件。

使用curl-vv參數還有助於顯示實際發送的內容。它沒有顯示數據,但至少顯示curl發送的Content-Length

+0

我錯過了--data-binary,這確實是問題所在。 -vv也很有幫助,thx! – RunHolt 2012-03-13 01:32:05

相關問題