此Web服务是否同时接受原始xml和对象?

时间:2010-04-06 22:33:40

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

我们有一个提供汽车保险报价的网络服务和一家提供保险代理管理系统的公司希望为他们的客户使用网络服务但他们想要传递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);

并将请求发送到Web服务。

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

通过这样做,我可以轻松地将请求和结果编组到xml文件中,并根据需要使用它们。 因此,如果客户端要通过http帖子将Web服务作为原始xml发送到soap信封内。 Web服务是否能够处理xml而不对Web服务进行任何更改,或者是否需要对Web服务进行更改以便它处理该类型的请求?

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

我确信我错过了一些显而易见的东西,但此刻正在躲避我,非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

我认为您需要单独的网址来处理这种情况。您仍然可以像往常一样映射WSDL及其端点。但是,您需要配置第二个单独的URL,该URL将具有从HTTP POST接受编码的XML流并单独处理的servlet。

答案 1 :(得分:0)

理论上,应该可以手工构建与传统WS客户端创建的XML无法区分的XML。

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

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

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

答案 2 :(得分:0)

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

但是,由于还有一个wsdltovb对他们来说应该更加乐观,所以做了很多工作是手工制作而且完全不必要的。当你改变一些东西时,他们必须重新做一遍。

他们只是重新发明轮子。