0

我正在开发 Web 服务 (SOAP),但我无法引用我正在尝试序列化响应 SOAP 按摩的 Web 应用程序,但我收到此错误:

http://schemas.xmlsoap.org/soap/envelope/'> 不是预期的

我正在使用这个:

  XmlSerializer serializer = new XmlSerializer(typeof(SearchFlightResponse));                       
        SearchFlightResponse result = (SearchFlightResponse)serializer.Deserialize(XmlReader.Create("file:///D:/SR_response.xml"));

这是 SOAP 响应:XML

4

1 回答 1

1

您将无法直接将 SOAP 信封反序列化为自定义类型。您将解析 xml 并提取数据,然后手动创建您的类型的实例,或者构建一个极其复杂的自定义 xml 序列化程序。

如果将此服务添加为服务参考,您可以节省几天的工作时间。您将获得一个代理客户端,您可以像调用任何其他对象一样调用它,但它会为您调用 Web 服务。

在您的项目中右键单击References并选择Add Service Reference.... 在Address框中,输入服务的 wsdl 位置,即:

https://ws.epower.amadeus.com/demo.WS/EpowerService.asmx?wsdl

您可能希望将命名空间从 ServiceReference1 更改为 EpowerSvc 或其他 -只是不要使用带点的名称(即:Epower.Service)。

现在您可以创建客户端并调用方法。我不确定您的示例代码调用了哪种方法,但我猜它是SearchFlight

 EpowerSvc.EpowerServiceSoapClient client = new EpowerSvc.EpowerServiceSoapClient();
 SearchFlightCalendarResponseOTA_AirLowFareSearchRS result = client.SearchFlight( someparam, someparam2, someparam3);

 //use result
 result.Items...
于 2017-05-06T11:31:40.587 回答