Apache Camel HTTP显示请求和响应

时间:2016-09-23 03:03:57

标签: https apache-camel

我正在使用Apache Camel将数据从CSV文件加载到Web服务。无论如何我可以显示请求和响应。以下是路线配置..

我从数组中拆分并聚合100个项目作为POST正文发送。

from(fileLocation)
.unmarshal().csv().bean(new CSVConverter(), "process")

.split(body())
.aggregate(constant(true), new GroupedBodyAggregationStrategy())
.completionSize(100)
.completionTimeout(1000)
.marshal().json(JsonLibrary.Jackson)

.setHeader("Authorization", simple(apiKEY))
.setHeader(Exchange.HTTP_METHOD, constant("POST"))
.setHeader(Exchange.HTTP_URI, simple(apiURL))
.setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
.to("https://serivceurl.com/abc");

请告诉我如何以上述路线显示请求和回复?

2 个答案:

答案 0 :(得分:2)

您可以使用camel log组件来记录标头;属性和身体

前:

.to("log:DEBUG?showBody=true&showHeaders=true")
.to("https://serivceurl.com/abc");
.to("log:DEBUG?showBody=true&showHeaders=true")

有关更多选项,请参阅:https://camel.apache.org/log.html

如果您打算使用CXF调用Web服务,可以使用开箱即用的日志记录功能,如下所示,

<cxf:bus>
  <cxf:features>
    <cxf:logging/>
  </cxf:features>
</cxf:bus>

答案 1 :(得分:0)

如果您查看org.apache.camel.component.http.HttpProducer类,您会发现实现了一些日志记录。

        try {
        if (LOG.isDebugEnabled()) {
            LOG.debug("Executing http {} method: {}", method.getName(), method.getURI());
        }
        int responseCode = executeMethod(method);
        LOG.debug("Http responseCode: {}", responseCode);

因此,如果将日志记录框架(如logback)配置为正确的LoggingLevel,您将看到HTTP组件的确切功能。 如果您想自己记录,可以尝试使用 log组件 log dsl ,如其他答案中所述。