首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问camel-cxf端点的有效负载主体

如何访问camel-cxf端点的有效负载主体
EN

Stack Overflow用户
提问于 2015-06-18 01:13:14
回答 1查看 1.7K关注 0票数 0

我有我的基于CXF的Jax-WS WS服务,并试图读取请求的有效负载。我将org.apache.camel.component.cxf.CxfEndpoint的数据格式设置为Payload。

我使用POST方法调用此服务,并将主体作为Soap信封,如下所示。

代码语言:javascript
复制
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:loc="http://www.csapi.org/schema/parlayx/terminal_location/v2_0/local">
   <soapenv:Header/>
   <soapenv:Body>
      <loc:getLocation>
         <loc:address>tel:+948420161525</loc:address>
         <loc:requestedAccuracy>500</loc:requestedAccuracy>
         <loc:acceptableAccuracy>500</loc:acceptableAccuracy>
      </loc:getLocation>
   </soapenv:Body>
</soapenv:Envelope>

这里body是ParlayX协议的GetLocation对象的表示。

在我的类中,我接收CxfPayload对象。我想从有效负载正文中检索地址和requestedAccuracy。我尝试从CxfPayload的getBodySources()和getBody()方法中提取所需的数据。但没能成功。我在对象中看不到所需的数据。

我引用了一些来自link的例子,但也不能成功。

知道如何提取有效载荷的正文数据吗?

EN

回答 1

Stack Overflow用户

发布于 2015-06-18 05:46:36

有几种方法可以做到这一点。例如,您可以将其解组到POJO中,并使用Java方法访问它。或者,如果您只需要有效负载中的几个值,则可以简单地使用XPath:

代码语言:javascript
复制
<setHeader headerName="address">
  <xpath>//loc:address/text()</xpath>
</setHeader>

其设置地址报头中的地址。

编辑:要在Java中的有效负载上使用xpath,可以使用下面这样的代码:

代码语言:javascript
复制
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(BODY_IN_STRING)));
XPath xPath = XPathFactory.newInstance().newXPath();

String address = xPath.evaluate("//loc:address/text()", document));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30898140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档