【问题标题】:Will this web service accept both raw xml and an object?此 Web 服务是否会同时接受原始 xml 和对象?
【发布时间】:2010-04-06 22:33:40
【问题描述】:

我们有一个提供汽车保险报价的 Web 服务,而一家提供保险代理管理系统的公司希望为其客户使用 Web 服务,但他们希望传递 Web 服务原始 xml 而不是使用 wsdl 来创建端口,服务期望的对象并调用 Web 方法。

通过创建这样的对象,Web 服务表现完美

    com.insurance.quotesvc.AgencyQuote service = new com.insurance.quotesvc.AgencyQuote();
com.insurance.quotesvc.QuotePortType port = service.getQuotePortType();
com.insurance.quotesvc.schemas.request.ACORD parameter = null;

然后用构成响应的其他对象创建初始化请求对象。

  parameter = factory.createACORD();
  parameter.setSignonRq(signOn);
  parameter.setInsurancesSvcRq(svcRq);

并将请求发送到网络服务。

  com.insurance.quotesvc.schemas.response.ACORD result = null;
  result = port.requestQuote(parameter);

通过这样做,我可以轻松地将请求和结果编组到一个 xml 文件中,并按照我的意愿处理它们。 因此,如果客户要通过 http 帖子将 Web 服务作为原始 xml 发送到肥皂信封内。 Web 服务是否能够在不对 Web 服务进行任何更改的情况下处理 xml,或者是否需要对 Web 服务进行更改才能使其处理该类型的请求?

Web 服务是 JAX_WS,我们目前有 Java 和 C# 客户端使用上述方法使用 Web 服务,但现在有另一个客户端想要在肥皂信封内发送原始 xml 而不是创建对象。我很确定他们会使用 vb 调用网络服务。

我确定我遗漏了一些明显的东西,但目前它正在躲避我,非常感谢任何帮助。

【问题讨论】:

    标签: c# java vb.net web-services


    【解决方案1】:

    我认为您需要单独的 URL 来处理这种情况。您仍然会照常映射您的 WSDL 及其端点。但是随后您需要配置第二个单独的 URL,该 URL 将具有一个 servlet,该 servlet 接受来自 HTTP POST 的编码 XML 流并单独处理。

    【讨论】:

    • 这个答案最能帮助我找到解决问题的方法。我将创建另一个接受原始 xml 的 Web 服务,并使用 jaxb 将 xml 解组为一个对象,然后我可以将其传递给当前的 Web 服务。这应该会减少所需的额外工作。感谢大家的回答。
    【解决方案2】:

    理论上,应该可以手动构建与传统 WS 客户端创建的 XML 没有区别的 XML。

    在实践中,在所有边缘情况下都做到这一点可能相当困难。如果他们(将原始 XML 发送到您的服务的客户)弄错了,他们很可能会遇到很多模糊不清的错误……您可能需要帮助他们诊断这些错误。

    在最坏的情况下,格式错误的消息可能会影响您的系统性能。但人们希望 WS 中间件层和您的应用程序能够抵御格式错误的请求的影响。

    简而言之,@duffymo 创建第二个 API 的方法对您来说风险较小,尽管成本对您来说是更多的前期工作。但最简单的方法就是说“不!”。

    【讨论】:

      【解决方案3】:

      应该没问题,因为您的 wsdltojava 和 wsdltocsharp 只会在幕后为您做这件事。只要他们遵守 WSDL 规定的合同。

      但是手动操作需要做很多工作,而且完全没有必要,因为还有一个 wsdltovb 对他们来说应该更容易。当你改变你身边的东西时,他们必须重新做一遍。

      他们只是在重新发明轮子。

      【讨论】:

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