CXF 可以记录报文日志,如果是Spring:
<jaxws:inInterceptors>
<bean class="orgapachecxfinterceptorLoggingInInterceptor" />
</jaxws:inInterceptors>
代码也可以:
Client proxy = ClientProxygetClient(port);
proxygetInInterceptors()add(new LoggingInInterceptor());
有对应的QName,就能获取了吧
public class SoapUtil{
public SOAPPart initSoapPart throwsSOAPException{
SOAPMessage soapMessage = MessageFactorynewInstancecreateMessage;
SOAPPart soapPart = soapMessagegetSOAPPart;
SOAPEnvelope soapEnvelope = soapPartgetEnvelope;
SOAPHeader soapHeader = soapEnvelopegetHeader;
SOAPElement cwmp = soapEnvelopeaddNamespaceDeclaration;
SOAPElement xsi = soapEnvelopeaddNamespaceDeclaration;
SOAPElement xsd = soapEnvelopeaddNamespaceDeclaration;
SOAPElement enc = soapEnvelopeaddNamespaceDeclaration;
SOAPElement id = soapHeaderaddChildElement;
idsetTextContent;
return soapPart;
}
}
1获取请求中参数的值:
设下图是我们已经建好的一步test step,它是一个rest test request,请求的参数有client_id和password两个,这一步step我们之前已经给它取名为user了
假设我们现在需要获取到client_id的值(也就是testor),那么我们可以新建一个groovy script,并且写入以下代码:
testRunnertestCasetestSteps['user']getPropertyValue("client_id")
在soapUI中可以把它输出,结果就是我们想要的testor
2获取响应结果的值
接上文,假设user这个request的返回结果是以下的json:
{
"code": 200,
"message": "",
"result": {
"token": "F7052EEE86FA6087CC0D1B2BD8BA8040"
}
}
那么我们想要获取到token的值,应该怎么做呢?
首先,要通过SoapUI提供的GroovyUtils获取返回的xml消息的 *** 作XmlHolder
import comeviwaresoapuisupportGroovyUtils
def gu = new GroovyUtils(context)
def field = gugetXmlHolder("user#ResponseAsXml")
接着,在XmlHolder中使用Xpath获取返回字段内容,可以自己写,如下:
def b= fieldgetNodeValue("//:result/:token")
如果觉得太麻烦老是写错path,而且你也不嫌代码难看,可以去assertion里选择Xpath Match,直接找到这个节点,用系统提供给你的值写到groovy中
即可以:def c=fieldgetNodeValue("//ns1:Response[1]/ns1:result[1]/ns1:token[1]")
到soapUI中查看输出结果,可以看到上文的b和c两个变量都能获取到正确的token值
以上就是关于cxf webservice服务端怎么能获取客户端发送的soap请求信息全部的内容,包括:cxf webservice服务端怎么能获取客户端发送的soap请求信息、java soap的header怎么获取、利用groovy脚本获取soapui中请求和响应的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)