2014-05-13 3 views
1

나는 클라이언트가 미디어 타입 헤더를 처리하는 방법으로 Restlet에 대한 몇 가지 초보자 질문 있어요 :Restlet 클라이언트는 미디어 유형의 요청을 어떻게 처리합니까?

  1. 나는 A 형의 기관에 전달하는 경우 '콘텐츠 유형'헤더에 넣어 클라이언트)는 POJO 또는 b을으로 Restlet 것이다 무엇) InputStream 인스턴스? '승인'헤더는 무엇입니까?
  2. HTTP 본문에서 JSON 형식의 POJO를 전송하려는 경우 POJO를 직렬화하여 JSON 문자열로 전달해야합니까, 아니면 POJO를 전달하면 나머지는 Restlet에서 처리 할 수 ​​있습니까? 전 사건 인 경우 'content-type'헤더와 방법을 지정해야합니까?

감사합니다. 당신이 ClientResource 클래스에 의존하는 경우

답변

1

, 당신은 사실

put(myPojo, MediaType.APPLICATION_JSON); 

업데이트하면 풋 전화로의 MediaType 매개 변수를 추가 할 수 있습니다, 여분의 미디어 유형 매개 변수는 기대 허용 결과 유형을 정의 원격 자원이지만 송신 된 엔티티에는 적용되지 않습니다.

보낸 엔티티/POJO의 미디어 유형에 대한 제어는 클래스 경로에서 사용할 수있는 확장자와 해당 순서에 따라 달라지는 ConverterService 기본 설정을 기반으로합니다.

직접 당신은 또한 당신의 클래스 경로 및 종속성에 org.restlet.ext.jackson 확장을 추가해야

ClientResource cr = new ClientResource("http://targetDomain/path"); 
cr.put(cr.toRepresentation(myPojo, new Variant(MediaType.APPLICATION_JSON)); 

를 호출하여 모든 권한을 가질 수 있습니다. XStream 확장은 또 다른 옵션입니다.

+0

MediaType.APPLICATION_JSON을 두 번째 매개 변수로 사용하면 myPojo가 자동으로 json 문자열로 serialize됩니다. 이것은 restlet 확장에 의해 수행됩니까? – fengye87

+0

죄송합니다. 초기 답변이 잘못되었습니다. 위의 업데이트를 참조하십시오. –

+0

고마워, 내 문제를 해결. appi docs에 대한 추가 정보가 있으면 JacksonRepresentation 엔티티를 직접 전달할 것입니다. 그러나 이것이 낙심하는지 확실하지 않습니다. – fengye87