2013-07-09 2 views
5

안녕하세요 저지 REST 클라이언트를 사용하여 REST POST API를 호출하려고했습니다. API는 워드 프로세서입니다 URL : 방법 : POST 헤더 정보 : - X-GWS-APP-NAME : XYZ 수락 : 응용 프로그램/JSON 또는 응용 프로그램/XML을저지 REST 클라이언트의 컨텐츠 유형/인코딩 설정

내 샘플 저지 클라이언트 코드가

입니다
Client client = Client.create(); 

WebResource resource=client.resource(URL); 

resource.accept(javax.ws.rs.core.MediaType.APPLICATION_XML); 
resource.type(javax.ws.rs.core.MediaType.APPLICATION_XML); 
resource.type("charset=utf-8"); 
ClientResponse response = resource.post(ClientResponse.class,myReqObj); 

지난 1 주일 이후로이 코드 변형을 시도했지만 작동하지 않습니다. 이와 관련하여 도움이된다면 큰 도움이됩니다.

답변

7

까다로운 부분은 WebResource 메서드가 Builder 디자인 패턴을 따르므로 요청의 전체 컨텍스트를 설정하는 추가 메서드를 호출 할 때 보존하고 계속해야하는 Builder 개체를 반환한다는 것입니다.

resource.accept를 실행하면 저장하지 않은 내용이 반환되므로 resource.type을 수행 할 때 잃어 버리므로 마지막 호출 만 적용됩니다.

일반적으로 모든 기준을 한 줄로 설정하지만 출력을 로컬 변수에 저장할 수도 있습니다.

ClientResponse response = client.resource(URL) 
           .accept(MediaType.APPLICATION_XML) 
           .type(MediaType.APPLICATION_XML) 
           .post(ClientResponse.class,myReqObj); 
+2

처럼 당신이 동의를 입력 라인의 끝에서 세미콜론을 제거 할 필요가 있다고 생각 계정 클래스의 인스턴스입니다. – FrontierPsycho

+0

모욕적 인 복사/붙여 넣기. :) 이제 해결되었습니다. 감사! – TheArchitect

+0

안녕하세요. 고맙습니다. :) – FrontierPsycho

1

나는 그렇게합니다. 여기

Response response = webTarget.request(MediaType.APPLICATION_JSON_TYPE) 
    .accept(MediaType.APPLICATION_JSON_TYPE) 
    .post(Entity.entity(a, "application/json; charset=UTF-8")); 

는 'A'는

@XmlRootElement 
public class account { 
... 
... 
} 
+0

저지 2의 경우인가요? 드문 것 같아서 대답을 조금 넓힐 수 있을까요? – Nenotlep