java - 当响应代码为 400 时,如何从 REST 客户端访问 apache-camel 中的有效负载?

标签 java spring apache-camel jbossfuse

在 Camel route ,我正在使用休息服务。对于无效输入,我收到以下带有 400 响应代码的 json 响应。但我无法访问有效负载。甚至在 Camel 身上也没有体现出来。请帮忙给出一个解决方案,当响应代码不是200时,如何访问其余的有效负载。

下面的 block 是包含 cxfrs:bean 的路由。我正在尝试处理 dotry block 中的异常,然后尝试检索处理器中的响应有效负载。但有效负载无法访问。

  <route id="_route3" streamCache="true">
     <from id="_from2" uri="direct:togetcustomercategorybackend"/>
       <doTry id="_doTry1">
         <to id="_to3" uri="cxfrs:bean:DsGetCustomerCategoryBackEndUrl"/>
      <doCatch id="_doCatch1">
      <exception>java.lang.Exception</exception> 
      <process ref="ResponseHandler" />
      </doCatch>
    </doTry>
  </route>

这是来自其余客户端的响应。请注意来自后端的有效负载,响应代码为 400

ID: 923
Response-Code: 400
Encoding: UTF-8
Content-Type: application/json; charset=utf-8
Headers: {connection=[keep-alive], Content-Length=[98], 
content-type=[application/json; charset=utf-8],Date=[Mon, 16 Dec 2019 17:19:04 GMT], 
Server=[Kestrel]}
Payload: {"error":{"errorcode":"inv.offertype","errormessage":"Invalid offertype 
provided","errorinfo":""}}

使用查询参数传递请求参数:

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;


public interface DSGetCustomerCategoryApi {


@GET    
@Produces(MediaType.APPLICATION_JSON)
public String DSGetCustomerCategory( 
        @QueryParam("OfferType") String OfferType, 
        @QueryParam("MSISDN") String MSISDN ,
        @QueryParam("IdType") String IdType ,
        @QueryParam("IdNumber") String IdNumber ,
        @QueryParam("BillAverage") Double BillAverage );

}

最佳答案

当响应代码不是 200 时,这意味着您遇到了异常,并且在有效负载中获取异常主体,下面的示例可能会有所帮助: public String getException(Exception 异常) { 返回异常.getMessage(); }

关于java - 当响应代码为 400 时,如何从 REST 客户端访问 apache-camel 中的有效负载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59362293/

相关文章:

java - 使用 JavaFX 的窗口内的棋盘

mysql - Hibernate 保存 self 引用父/子

java - Spring boot Hadoop、Webhdfs 和 Apache Knox

java - 与 Camel 集成的基于 REST 的服务中的 API 版本管理

java - 参数不匹配;方法无法转换为TimerTask

java - Spring 启动 : no String-argument constructor/factory method to deserialize from String value

java - Groovy 类的 XML 序列化

java - Apache Camel从ftp到数据库

java - 如何在调用soap服务时在camel交换对象中添加HTTP请求头?

java - 尝试运行 Eclipse 插件时出错