当前位置: 首页 > 知识库问答 >
问题:

Camel rest-dsl发生异常时如何封送到JSON/XML

宗政卓
2023-03-14

我有一个带有绑定的REST-dsl骆驼路由:json_xml with.type()和outType()。当没有异常发生时,它工作得很好。也就是说,json输入给出了json输出。Xml输入给出Xml输出。

onException(IllegalArgumentException.class)
        .log(LoggingLevel.ERROR, LOGGER, "error")
        .handled(true)
        .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(400))
        .setHeader(Exchange.CONTENT_TYPE, exchangeProperty(Exchange.CONTENT_TYPE))
        .bean(errorResponseTranslator);
restConfiguration().component("restlet").port(port).skipBindingOnErrorCode(true)
        .bindingMode(RestBindingMode.json_xml);
    rest("/whatever/api/v1/request")
        .post().type(RequestDto.class).outType(ResponseDto.class)
            .route()
            .setProperty(Exchange.CONTENT_TYPE, header(Exchange.CONTENT_TYPE))
           ...process
@XmlRootElement(name = "errorResponse")
@XmlAccessorType(XmlAccessType.PROPERTY)
public class ErrorResponseDto {
  private String errorCode;
  private String message;

  @XmlElement(name = "message")
  public String getMessage() {
      return message;
  }

  public void setMessage(String message) {
      this.message = message;
  }

  @XmlElement(name = "errorCode")
  public String getErrorCode() {
      return errorCode;
  }

  public void setErrorCode(String errorCode) {
      this.errorCode = errorCode;
  }
}

共有1个答案

沈栋
2023-03-14

您需要将内容类型explicit设置为XML

 .setHeader(Exchange.CONTENT_TYPE, exchangeProperty(Exchange.CONTENT_TYPE))

应该是

 .setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
 类似资料:
  • 我在从JSON发送日期字段时收到一个错误。 Pojo类: 错误: JSON分析错误:无法从字符串“2018-07-10”反序列化类型的值:格式应为“yyyy-mm-dd hh:mm:ss.000”;嵌套异常为com.fasterxml.jackson.databind.exc.InvalidFormatException:无法从字符串“2018-07-10”反序列化类型的值:格式应为“yyyy-m

  • 我有以下配置 我从orderPlaced(一个rabbit队列)中读取,然后将对象解封为OrderModel,然后执行两个进程,其中第二个进程将body对象类型从OrderModel更改为SalesOrder,但当封送消息时,我得到一个错误 虽然我指定封送器使用salesOrder数据格式,但在做事情的最后,由于某种原因它使用的是orderModel数据格式,但我无法确定原因。 这就是SalesO

  • 这是我第一次处理SSLSockets, 谢谢你, 编辑1:我启用了调试,这是调试:

  • 我正在编写一个程序,将一些JSON编码的数据存储在一个文件中,但有时生成的文件是空白的(因为没有找到任何新数据)。当程序查找并存储数据时,我执行以下操作: 当然,如果文件是空白的,这将引发一个异常,我可以抓住,但不让我删除文件。我曾经尝试过: 我得到了这个错误: 发生异常时,如何删除文件?

  • 在行引发异常: 线程“main”javax.net.ssl.SSLHandShaker异常:Sun.Security.Validator.ValidatoreXception:PKIX路径构建失败:Sun.Security.Provider.CertPath.SunCertPathBuilderException:无法在Sun.Security.SSL.Alerts.GetSleXception(

  • 我将JSON数据从jQuery传递到我的Java控制器,我正在使用,但我得到一个异常说: 组织。springframework。网状物HttpMediaTypeNotSupportedException:内容类型'application/x-www-form-urlencoded;字符集=UTF-8'不受支持 我传递的数据是: 我用来传递此数据的AJAX调用是: 我的Java控制器如下所示 我的P