2009-11-17 2 views
0

webservice.It로 cxf를 사용하고 있습니다. 요청한 data의 XML 및 json 형식 출력을 지원합니다. 일부 예외가 내 코드에서 발생한 경우 다시 돌려주고 싶습니다. 오류 코드는 xml 또는 json format.But에서 json과 xml을 제공 할 때를 알지 못합니다. 사용자가 요청한 url에 의존합니다. 당신은 당신이 만드는 데 사용되는 MIME 타입을 감지 할 말은 경우URL을 마임 (mime)하는 방법

예를

@Path ("/ 보고서/광고보기 /은 loginid/{은 loginid}/출판 /")

PublisherReports getPublisherReportsAdView(

     @PathParam("loginId") String loginId, 
     @QueryParam("fromDate") String fromDate, 
     @QueryParam("toDate") String toDate, 
     @QueryParam("filterValue") String filterValue); 

답변

1

요청을 받으면 @Consumes 주석을 사용하여 어떤 메소드가 어떤 유형의 요청을 처리하도록 지시 할 수 있습니다. 그래서 당신은 쓸 수 :

// Called when an XML request is made 
@Path("/reports/ad-view/loginId/{loginId}/publisher/") 
@Consumes("application/xml") 
PublisherReports getPublisherReportsAdViewXml(... 

과 :

// Called when a JSON request is made 
@Path("/reports/ad-view/loginId/{loginId}/publisher/") 
@Consumes("application/json") 
PublisherReports getPublisherReportsAdViewJson(... 

그런 다음 실제 처리 로직을 수행하지만 여전히 방법에 따라 다르게 예외를 처리하는 일반적인 방법을 호출 getPublisherReportsAdView() 메소드의 각 변형이를 호출됩니다.

+0

이 경우에 나는 내 코드 크기를 늘릴 여분의 함수를 만들고 있습니다. 대신에 ximetype을 xml 또는 json으로 알려줄 쿼리 매개 변수를 전달할 수 있습니다. 그리고 난 내 code.If의 모든 일에는 예외가 잘 거기없는 경우 다음 CXF 자동으로 내가 인쇄하는 경우 u는 – ha22109

0

다른 방법을 필요로하지 않는 또 다른 방법은 @HeaderParam 주석으로 주석 된 매개 변수를 추가하고이를 사용하여 'Content-Type'요청 헤더의 값을 보유하는 것입니다.

예컨대 :

PublisherReports getPublisherReportsAdView(
       @PathParam("loginId") String loginId, 
       @QueryParam("fromDate") String fromDate, 
       @QueryParam("toDate") String toDate, 
       @QueryParam("filterValue") String filterValue, 
       @HeaderParam("Content-Type") String contentType) 
{ 
    ... 

의 contentType의 값은 또한 예를 들어 캐릭터 세트 정보를 포함 가능성이됩니다 응용 프로그램/JSON을; charset = UTF-8 그래서 요청에 JSON 또는 XML이 포함되어 있으면 해결할 때이를 무시해야합니다.

+0

를 반환합니다 mimeType를 알 필요가없는 – ha22109

+0

조금 더 설명 할 수있는 URL 에 headerparam를 정의하는 방법이 요구 된 형식 – ha22109

+0

@HeaderParam은 URL에서 값을 삽입하지 않으며 요청시 주어진 이름으로 HTTP 헤더에서 값을받습니다. 여기에 대한 설명서가 있습니다 : http://jackson.codehaus.org/javadoc/jax-rs/1.0/javax/ws/rs/HeaderParam.html – Andy