0

我使用 cxf 作为 web 服务。它支持请求数据的 xml 和 json 格式输出。我想知道如果我的代码中发生了一些异常,那么我想以 xml 或 json 格式将错误代码返回给他。但我不知道何时提供 json 和 xml,这取决于用户询问的请求 url。

例子

@Path("/reports/ad-view/loginId/{loginId}/publisher/")

PublisherReports getPublisherReportsAdView(

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

2 回答 2

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() 方法的每个变体调用一个通用方法来执行实际的处理逻辑,但仍然根据被调用的方法以不同的方式处理异常。

于 2009-11-17T14:26:49.143 回答
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 的值可能还会包含字符集信息,例如:application/json;charset=UTF-8因此在计算请求是否包含 JSON 或 XML 时,您需要忽略它。

于 2009-11-18T10:36:23.543 回答