2016-11-07 24 views
0

이 끝 점이있는 URL (https://<my app name>.appspot.com/_ah/api/endpoints/v1/test)을 직접 호출하고 해당 본문을 제공 할 때 내 끝점으로 오는 HTTP POST 요청의 원시 본문을 가져 오는 데 관심이 있습니다.App Engine 끝점의 원시 HTTP 요청 본문

@ApiMethod(name = "test", path = "test", httpMethod = ApiMethod.HttpMethod.POST) 
public WrappedBoolean test(final HttpServletRequest request, ServletContext servletContext) throws Exception { 

    //??? 
    return new WrappedBoolean(true); 
} 

불행히도, 읽기 후 HttpServletRequest에서 InputStream를 검색하기 위해 노력하고, 모든 데이터가 이미 읽은 의미 나에게 -1을 제공합니다 : 여기에 성공적으로 호출되는 엔드 포인트의 방법이다. 이는 App Engine 엔드 포인트 런타임이 이미 요청을 이미 처리했을 가능성이 높기 때문에 의미가 있습니다.

누구나이 끝점에 게시 된 원래 POST 요청을 보류하는 방법에 대한 견해를 가지고 있습니까?

답변

0

원본 메시지를 쉽게 복구 할 수있는 방법이없는 것처럼 보입니다. 요구 사항 앞에 필터를 배치하고, 요청을 읽고, 속성에 저장하고 엔드 포인트 호출 중에 해당 속성을 잡는 등의 추가 조작을 수행해야합니다. 이 모든 작업은 신중하게 수행되어야합니다. 따라서 SPI 런타임 (엔드 포인트)에 대한 입력 스트림을 엉망으로 처리하지 마십시오. 그렇지 않으면 엔드 포인트를 호출 할 필요가 없습니다. 아무튼, 너무 큰 번거 로움. 엔드 포인트가 실제로는 의미가없는 것을 수행하고 Java Servlet을 직접적으로 사용했습니다.