2012-06-29 3 views
0

REST-Web-Interface를 통해 Dojo 기반 웹 애플리케이션에 데이터를 제공하기 위해 restlet 2.0.11을 사용하고 있습니다.Restlet을 사용하여 사용자 정의 컨텐츠 범위 헤더 설정

Content-Range: items 0-19/100 

(출처 : http://dojotoolkit.org/reference-guide/1.7/dojox/data/JsonRestStore.html)

수단

은 도장의 문서에 따르면, 페이징은 HTTP의 헤더, 따라서 도장은 헤더 등을 기대하는 "콘텐츠 - 범위"를 사용하여 실현 REST-Api는 총 100 개 항목 중 처음 20 개를 제공합니다.

다음과 같은 오류이

getResponse().getAttributes().get("org.restlet.http.headers").add(new Parameter("Content-Range", "FooBar") 

결과처럼 수동의 Content-Range 헤더를 설정 :

WARNING: Addition of the standard header "Content-Range" is not allowed. Please use the equivalent property in the Restlet API. 

을으로 Restlet의 문서에 따르면 속성은 "message.entity.range"(자료 : http://wiki.restlet.org/docs_2.0/130-restlet.html)

이 해시지도의 직접 수정도 성공하지 못했습니다.

,
getResponse().getAttributes().put("message.entity.range", "FooBat"); 

그것이 SetRange를() 메소드를 가지므로으로 Restlet의 "표현"-object를 사용 유망한 것 같았다 다른 방법이지만 요청 시간 동안 상기 개체 참조가 null :

getResponse().getEntity() 

그럼 내 질문은 : Restlet 응답에 Content-Range 헤더를 설정하는 방법입니까?

답변

1

Representation 클래스의 해당 Java 속성을 사용해야하므로 getResponse(). getEntity(). setRange (myRange)입니다.

+0

제 질문에서 말했듯이 getResponse(). getEntity()가 null입니다. 그것을 초기화하는 방법이 있습니까? –

+0

응답 엔티티를 먼저 설정해야합니다 (예 : StringRepresentation 클래스 또는 모든 표현 서브 클래스 사용). –

+0

감사합니다. 나는 그것을 작동 시켰어. (getResponse.setEntity (new StringRepresentation (...))를 호출하여) 다음 문제는 Content-Range가 "bytes"로 시작하도록 하드 코딩되어 있다는 것입니다. Dojo는 헤더가 "items"로 시작해야합니다. 나는 그 기능이 포함 된 재발행 요청을 보낼 것이라고 생각한다. –