如何mime类型的网址

时间:2009-11-17 14:02:16

标签: java cxf

我使用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);

2 个答案:

答案 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,则需要忽略它。