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

C# 此web服务是否同时接受原始xml和对象?,c#,java,vb.net,web-services,C#,Java,Vb.net,Web Services,我们有一个提供汽车保险报价的web服务,一个提供保险代理管理系统的公司希望为他们的客户机使用web服务,但他们希望传递web服务原始xml,而不是使用wsdl来创建端口,即服务期望的对象并调用web方法 通过创建这样一个对象,web服务的性能完美无瑕 com.insurance.quotesvc.AgencyQuote service = new com.insurance.quotesvc.AgencyQuote(); com.insurance.quotesvc.QuotePortT

我们有一个提供汽车保险报价的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);
并将请求发送到web服务

  com.insurance.quotesvc.schemas.response.ACORD result = null;
  result = port.requestQuote(parameter);
通过这样做,我能够轻松地将请求和结果打包成xml文件,并按照我的意愿处理它们。 因此,如果客户机要通过http post将web服务作为原始xml发送到soap信封中。web服务是否能够在不更改web服务的情况下处理xml,或者是否需要更改web服务才能处理该类型的请求

web服务是一个JAX#U WS,我们目前有Java和C#客户端使用上述方法使用web服务,但现在有另一个客户端希望在soap信封中发送原始xml,而不是创建对象。我确信他们将使用vb调用web服务


我确信我遗漏了一些明显的东西,但目前我无法理解,非常感谢您的帮助。

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

从理论上讲,应该可以手动构建与传统WS-client创建的XML无法区分的XML

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

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


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

应该没有问题,因为您的wsdltojava和wsdltocsharp只会在幕后为您这样做。只要他们遵守WSDL规定的契约

但是手工做这件事需要做很多工作,而且完全没有必要,因为还有一个wsdltovb的东西应该对他们更容易。当你改变了你身边的某些事情时,他们必须重新开始


他们只是在重新发明轮子

这个答案最有助于我找到解决问题的方法。我将创建另一个web服务,它接受原始xml,并使用jaxb将xml解组为一个对象,然后将该对象传递给当前的web服务。这将减少所需的额外工作。谢谢大家的回答。