2014-01-17 2 views
0

jax-rs를 사용하여 get 메소드의 입력 XML을 읽고 싶습니다. 이상하게 들리지만 이것이 사용자 요구 사항입니다. 사용자가 REST GET 메소드의 본문을 보내는 경우 사용자 400 (잘못된 요청)을 표시하려고합니다. 따라서 사용자가 본문을 보내는 경우 잘못된 요청을 보내려면 먼저 본문을 읽어야합니다. 작성된 코드에서Jersey (REST)를 사용하여 GET 요청에 대한 입력 XML을 읽는 방법은 무엇입니까?

추출물 :

@GET 
    @Path("{ids}") 
    @Consumes({ MediaType.APPLICATION_XML, MediaType.TEXT_XML, "multipart/form-data", "application/x-www-form-urlencoded" }) 
    @Produces({ MediaType.APPLICATION_XML, MediaType.TEXT_XML }) 
    public Response read(InputStream inputStream, @PathParam("ids") String Ids, @Context HttpHeaders headers, 
     @Context HttpServletRequest httpServletRequest, @Context HttpServletResponse httpServletResponse, 
     @Context UriInfo uriInfo) 
    {.........//Code here 

그래서 내가 좋아하는 inputStream을 읽을 때 : 요청이 포함되어 있는지 여부를

//Some Code here  
try 
       { 
        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); 
        while ((line = reader.readLine()) != null) 
         sb.append(line).append("\n"); 
       } 
       catch (Exception e) 
       { 
        //exception handling 
       } 
//Some code here 

, 신체 여부, 항상 inputStream을 읽은 후 나에게 빈 반환 .

내 질문에 어떻게 XML 본문이 GET 요청에서 전송되는지 확인할 수 있습니까?

답변

2

실제로 InputStream은 요청의 본문을 읽습니다. 자, GET 요청은 실제로 시체가 있어야하지 않습니다. 그래서 저지가 몸을 벗겨 낼 수도 있습니다. 또한 요청을하기 위해 어떤 클라이언트를 사용하고 있습니까?

본문이 필요하면 상황에 따라 POST 또는 PUT을 사용하는 것이 좋습니다.

+0

저지가 GET 및 삭제 요청을 위해 본문을 벗기면 분명히 말해 줄 수 있습니까? –

+0

Jersey가 몸체를 벗기지 않고 테스트했습니다. 그러나 자원이 전개 될 때 경고를 발행합니다. 따라서 신체 내용을 읽을 수 있어야합니다. 나는'curl -X GET -v --data-binary @ hello.scala http : // localhost : 8081/webservice /'로 테스트했다. – shabyasachi

관련 문제