2012-03-12 2 views
1

저지 REST를 사용하는 서버에 새 기능을 추가하고 있습니다. 바이너리로 데이터를 게시하고 싶습니다. 나는 단순히 추가 한 : 나는 디버거를 단계별로 때 첫 번째 바이트가 실제로 test.bin의 첫 번째 바이트입니다Jersey의 InputStream REST는 단일 바이트 만 리턴합니다.

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 번째의 read는 스트림에 데이터가없는 것을 나타내는 -1을 돌려줍니다. curl을 잘못 사용하고 있습니까? 필요한 다른 공급자가 있습니까? 다른 구성 매개 변수? 기본적으로 수행해야하므로 @Consumes("*/*")이 필요하지 않은 것 같습니다.

답변

3

설명서에 따라 엄격하게 이진 데이터의 경우 -d (즉 --data-ascii의 별칭) 대신 --data-binary을 사용해야합니다.

또한 cat을 사용하는 대신 을 사용하여 파일을 포함 할 수 있습니다.

curl-vv 매개 변수를 사용하면 실제로 보내지는 내용을 표시하는 데 도움이됩니다. 데이터를 표시하지 않지만 적어도 curl에 의해 전송 된 Content-Length을 보여줍니다.

+0

정말로 --data-binary가 빠졌습니다. -vv도 매우 유용합니다. – RunHolt