2017-10-05 74 views
0

我已经安装了WSO2 EI 6.1.1。我创建了一个http代理,并且创建了一个从请求中获取特定值并通过Java Class中介处理它的序列。通过将表达式定义为$url:token,我已成功从属性介体中的URL获取参数。Synapse XPath变量参考

我想获得http方法(Get,Post,Put ...)和请求的主体,但是我找不到定义它们的正确的XPath变量。

这是我想捕捉的请求(我想PUT和JSON数据)的例子

PUT path?token=aaaa HTTP/1.1 
Content-Length: 28 
Host: xx.xx.xx.xx 
Content-Type: application/json 

{ 
"id": 14, 
"value": "+02" 
} 

看来,值realted到$ TRP和$身体的对象,但我有没能找到任何关于如何获得它们的参考。


UPDATE:

定义$身体为expresion给了我下面的内容:

<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"/> 
+0

你是否意识到XPath是XML中选择节点? – kjhughes

+0

我不太确定如何获取这些数据。据我所知,我要搜索的值是XML格式的请求中交换的数据。 – jordi

+0

文档描述了一些xpath变量,如$ trp和$ body(transport anjd body),它们应该包含数据,但我无法解压缩它。 – jordi

回答

1

尝试这些。

身体:

<property name="payload" expression="$body"/> 

HTTP动词:

<property name="verb" expression="$axis2:HTTP_METHOD"/> 

<property name="verb" expression="$ctx:HTTP_METHOD"/> 
+0

它适用于方法(轴,而不是最后一个),但是当请求身体时,我只能得到。请求中没有json内容的跟踪 – jordi

+0

使用以下方法可以在Java Class中介中完全获取Body:reqBody = context.getEnvelope()。getBody()。toString(); – jordi