2012-03-12 13 views
1

ジャージーRESTを使用するサーバーに新しい関数を追加しています。私はバイナリとしてデータを投稿したい。私は単純に追加しました:私は、デバッガをステップ実行すると、最初のバイトが実際にtest.binの最初のバイトであるジャージーのInputStream RESTは1バイトだけを返します

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

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

は、それから私は、次のコマンドを実行します。ただし、2回目の読み取りでは、ストリームにデータがないことを示す-1が返されます。 curlを間違って使用していますか?私がする必要があるプロバイダのためのいくつかの他のセットアップはありますか?他の設定パラメータ?それはデフォルトでそれを行う必要があるので、私は@Consumes("*/*")を必要としないようです。

答えて

3

ドキュメントごとに、厳密にバイナリデータの場合は、-d--data-asciiのエイリアス)の代わりに--data-binaryを使用する必要があります。

また、catを使用する代わりに、を使用してファイルを含めることもできます。

curl-vvパラメータを使用すると、実際に送信された内容を示すのに役立ちます。データは表示されませんが、少なくともによって送信されたContent-Lengthが表示されます。

+0

本当に問題だった--data-binaryが見つかりませんでした。 -vvも非常に役に立ちます。 – RunHolt

関連する問題