Java 如何从Camel cxfrs中的REST 404响应访问有效负载?
我有一条骆驼路线,可以访问REST服务。如果REST响应为200 ok,则一切正常。但是,如果响应是404,REST服务将在有效负载中返回一些额外的信息,我无法找到访问这些信息的方法 这是运行调试日志的一部分:Java 如何从Camel cxfrs中的REST 404响应访问有效负载?,java,rest,apache-camel,Java,Rest,Apache Camel,我有一条骆驼路线,可以访问REST服务。如果REST响应为200 ok,则一切正常。但是,如果响应是404,REST服务将在有效负载中返回一些额外的信息,我无法找到访问这些信息的方法 这是运行调试日志的一部分: [Camel (rraaCamelContext) thread #2 - seda://from_rraa] INFO org.apache.cxf.interceptor.LoggingInInterceptor - Inbound Message -----------------
[Camel (rraaCamelContext) thread #2 - seda://from_rraa] INFO org.apache.cxf.interceptor.LoggingInInterceptor - Inbound Message
----------------------------
ID: 2
Response-Code: 404
Encoding: ISO-8859-1
Content-Type: application/json
Headers: {Accept=[application/json], breadcrumbId=[ID-Steves-MacBook-Pro-local-53701-1446241733043-1-7], content-type=[application/json], OriginalHeader=[{name=VerifyEmployeeRequest, version=1, scac=rraa, timeSent=null, uuid=abcd-1234}], pin=[1234], reason=[INIT], Server=[Jetty(9.2.11.v20150529)], transfer-encoding=[chunked], User-Agent=[Apache CXF 3.1.2]}
Payload: { "employeeID": "bad-name", "message": "id not found" }
我的路线设置为:
<route id="rraaIss">
<from uri="seda:from_rraa"/>
<process ref="issPreprocessor"/>
<unmarshal ref="IssRequest"/>
<process ref="webServiceProcessor"/>
<to uri="cxfrs:bean:webService"/>
<onException>
<exception>javax.ws.rs.NotFoundException</exception>
<handled><constant>true</constant></handled>
<to uri="bean:crewServiceNotFoundProcessor"/>
</onException>
<process ref="packageWebServiceReplyForIss"/>
<to uri="seda:to_rraa"/>
</route>
javax.ws.rs.NotFoundException
真的
我的
crewServiceNotFoundProcessor
bean在响应为404时被调用,它可以看到异常,但是我如何从原始HTTP响应中获取有效负载呢?我现在可以工作了。主要问题是我将REST操作定义为:
@GET
@Path(value="/authentication/{scac}/employees/{id}")
@Produces({ MediaType.APPLICATION_JSON })
public String verifyEmployee(@PathParam("scac") String scac,
@PathParam("id") String id,
@QueryParam("pin") String pin,
@QueryParam("reason") String reason);
当我将返回类型从String更改为Response时,完整的响应现在可用,throweexceptionnfailure=false选项现在也起作用了。所以,这是一个新手的错误