Apache Camel:调用HttpComponent后如何从Exchange获取HttpRequest与HttpResponse
在Apache Camel中调用HttpComponent后获取HttpRequest和HttpResponse的方法
获取HttpRequest
调用HttpComponent前后,可通过两种方式获取HttpRequest:
- 从Exchange属性中直接提取,使用
Exchange.HTTP_REQUEST作为key,返回类型为org.apache.http.client.methods.HttpUriRequest - 将Exchange的In消息转换为
org.apache.camel.component.http.HttpMessage,调用其getHttpRequest()方法
获取HttpResponse
调用HttpComponent完成后,HttpResponse可通过以下方式获取:
- 从Exchange属性中提取,使用
Exchange.HTTP_RESPONSE作为key,返回类型为org.apache.http.HttpResponse - 将In消息转换为
HttpMessage后,调用getHttpResponse()方法
代码示例
from("direct:restendpoint").routeId("direct_restendpoint") .to("https://<URL_SERVICE>") .process(exchange -> { String responseCode = exchange.getIn().getHeader("CamelHttpResponseCode").toString(); // 获取HttpRequest org.apache.http.client.methods.HttpUriRequest httpRequest = exchange.getProperty(Exchange.HTTP_REQUEST, org.apache.http.client.methods.HttpUriRequest.class); // 或者通过HttpMessage获取HttpRequest // org.apache.camel.component.http.HttpMessage httpMessage = // exchange.getIn(org.apache.camel.component.http.HttpMessage.class); // org.apache.http.client.methods.HttpUriRequest httpRequest = httpMessage.getHttpRequest(); // 获取HttpResponse org.apache.http.HttpResponse httpResponse = exchange.getProperty(Exchange.HTTP_RESPONSE, org.apache.http.HttpResponse.class); // 或者通过HttpMessage获取HttpResponse // org.apache.http.HttpResponse httpResponse = httpMessage.getHttpResponse(); // 后续操作示例:获取请求URL、响应头 String requestUrl = httpRequest.getURI().toString(); org.apache.http.Header[] responseHeaders = httpResponse.getAllHeaders(); });
注意事项
- 需确保引入Apache HttpComponents和Camel HttpComponent的相关依赖
- 若使用Camel的
ahc异步HttpClient组件,对应的请求/响应类型为AsyncHttpClientRequest和AsyncHttpClientResponse,需调整获取方式
内容的提问来源于stack exchange,提问作者stewchicken
相关产品推荐
相关产品推荐

