我使用cxf作为webservice.It支持所请求数据的xml和json格式输出。我想知道如果在我的代码中发生了一些异常,那么我想在xml中返回错误代码json format.But我不知道什么时候给json和xml,它取决于用户问过的请求的URL。
例如
@Path( “/报告/广告观看/登录ID / {登录ID} /出版者/”)
PublisherReports getPublisherReportsAdView(
@PathParam("loginId") String loginId,
@QueryParam("fromDate") String fromDate,
@QueryParam("toDate") String toDate,
@QueryParam("filterValue") String filterValue);
答案 0 :(得分:1)
如果您要检测用于发出请求的mime类型,则可以使用@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()方法的每个变体调用一个公共方法来执行实际的处理逻辑,但仍然根据被调用的方法处理不同的异常。
答案 1 :(得分:0)
另一种不需要额外方法的方法是添加一个用@HeaderParam注释注释的参数,并使用它来保存“Content-Type”请求头的值。
e.g:
PublisherReports getPublisherReportsAdView(
@PathParam("loginId") String loginId,
@QueryParam("fromDate") String fromDate,
@QueryParam("toDate") String toDate,
@QueryParam("filterValue") String filterValue,
@HeaderParam("Content-Type") String contentType)
{
...
contentType的值可能还包括字符集信息,例如:application / json; charset = UTF-8 因此,如果请求包含JSON或XML,则需要忽略它。