2013-12-14 3 views
20

Jersey 2 클라이언트가있는 빈 몸체로 게시물 요청을 제출하려면 어떻게해야합니까?Jersey 2 클라이언트가있는 빈 본체 게시

final MyClass result = ClientBuilder.newClient() 
    .target("http://localhost:8080") 
    .path("path") 
    .queryParam("key", "value") 
    .request(APPLICATION_JSON) 
    .post(What to fill in here if the body should be left empty??, MyClass.class); 

업데이트 :이 작동합니다

final MyClass result = ClientBuilder 
    .newBuilder().register(JacksonFeature).build() 
    .target("http://localhost:8080") 
    .path("path") 
    .queryParam("key", "value") 
    .request(APPLICATION_JSON) 
    .post(null, MyClass.class); 
+0

나는 파티에 늦게 해요,하지만 FWIW는 업데이트 내 특정 문제에 대한 답변입니다 - 특별히 내가 그 시도하지만'MessageBodyProviderNotFoundException있어 콘텐츠-Type 헤더 : –

답변

18
나는 문서의 어느 곳이를 찾을 수없는,하지만 난 당신이 빈 몸을 얻기 위해 null를 사용할 수 있다고 생각

:

final MyClass result = ClientBuilder.newClient() 
    .target("http://localhost:8080") 
    .path("path") 
    .queryParam("key", "value") 
    .request(APPLICATION_JSON) 
    .post(Entity.json(null), MyClass.class) 
+0

을 원하지 않는다 : MessageBodyWriter 미디어 유형 = application/json에 대해 찾을 수 없습니다. – Stine

+0

완전히 다른 문제입니다 ... 기본 JacksonFeature를 등록하거나 자신의 MessageBodyWriter/Reader를 작성해야합니다. – Alden

+0

아, 당신이 위의 것을 쓴 것을 볼 수 있습니다. 미안합니다. 그래서'null'이 정답입니다, 그렇죠? – Alden

4

버전 변경 여부는 확실하지 않습니다. 그러나, 다음은 작동하지 않습니다 : 다음은 잘 작동

builder.put(Entity.json(null) );

가 :

builder.put(Entity.json("") );

5

내가 찾은이 나를 위해 일한 :

Response r = client 
    .target(url) 
    .path(path) 
    .queryParam(name, value) 
    .request() 
    .put(Entity.json("")); 

패스 null 치가 아닌 빈 상태 (empty)의 캐릭터 라인

+0

고마워요, 저 역시 잘됐다. –

2

그냥 빈 txt를 게시하십시오.

.post(Entity.text(""));