【问题标题】:Raw Soap requests/responses in citrus柑橘中的 Raw Soap 请求/响应
【发布时间】:2019-01-30 23:45:38
【问题描述】:

有没有办法在 Citrus 框架中作为客户端或服务器发送原始的肥皂请求和响应?我有一个肥皂请求的纯文本,想将它发送到服务器。之后我想验证纯文本/ xml - 响应。

问候, 可疑的迪耶

【问题讨论】:

    标签: http soap citrus-framework


    【解决方案1】:

    你检查过这个sample project 吗?这是如何使用 Citrus 测试 SOAP 端点的一个很好的例子。基本上,当您发送带有soap() 操作的XML 时,它将被包装在一个SOAP 信封中。 Citrus 在幕后处理所有 SOAP 技术细节,因此您可以保持测试简单。

    但这也取决于您所说的“原始肥皂请求和响应”是什么意思。如果您想完全控制整个 XML(SOAP 信封 + 正文),您可以使用标准 HTTP 操作 documentationsample project。使用此方法时,您需要了解一些事项:

    • 您必须发送完整的 SOAP 信封
    • 您需要根据 SOAP 版本设置正确的 Content-Type HTTP 标头
    • 如果您使用的是 SOAP 1.1,您还需要发送 SOAPAction HTTP 标头
    • 没有架构验证

    【讨论】:

    • 是的,我第一次使用这个项目作为模板。第一个问题是 Citrus 无法处理 wsdl 或者说自动提取需要的 xsd,所以我手动执行此操作。在此之后 Citrus 构建了测试,甚至显示“通过”,尽管它没有执行某些操作也没有发出警告.这是因为我想以纯文本形式发送soap-request,因为我有一些日志信息。目前这仅用于原型设计,所以这可能没问题。无论如何,我没有像您的解决方案中提到的那样设置内容类型或 SOAPAction。我试试看
    【解决方案2】:

    默认情况下,Citrus 将自动处理 SOAP 信封并为您包装/解包有效负载主体。如果您想保持 SOAP 信封原样以便自己提供整个 SOAP 消息,您需要在服务器端点上进行设置:

    <citrus-ws:server id="soapServer"
        port="8080"
        auto-start="true"
        keep-soap-envelope="true"/>
    

    使用keep-soap-envelope="true",您现在可以在处理此服务器端点上的消息时自行指定 SOAP 信封。在验证中,您现在可以提供整个 SOAP 信封作为预期的消息内容。

    在客户端,您需要在 Citrus 中使用普通的 http-client 组件,因为 soap-client 组件目前无法保留 SOAP 信封。

    当然也可以使用客户端和服务器端的核心http组件来发送和接收带有测试人员提供的SOAP信封的SOAP消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      相关资源
      最近更新 更多