如何使用 C# 处理没有 WSDL 的 Web 服务?
我的应用程序(.NET 4.0)需要与网络服务集成。如果 Web 服务确实有 WSDL,那么使用 WCF 生成代理类会很容易,但在这种情况下这是不可能的(无 WSDL)。
要与该服务器通信,我们必须发送一条带有设置的消息,然后接收如下内容:
<Desc>
<Make cfe_code="98" cfe_value="Volkswagen" label="Märke" value="Volkswagen"/>
<ModelName cfe_code="99" cfe_value="Touareg" label="Modell" value="Touareg"/>
<BodyType cfe_code="212" cfe_value="22" label="Kaross" value="SUV"/>
<ModelYear cfe_code="8" cfe_value="2005" label="Årsmodell" value="2005"/>
...
</Desc>
那么我该如何解决这个问题?我是否必须深入了解 XMLDocuments 并全部手动完成?
Edit1: Web 服务的 URL 可能如下所示:http://MyServer.com/ag/get?UID=9999999999.eu_vddsall_xml&VINREG=STU123&LANG=en
UID is static
VINREG is the registration ID of the object that we need information about
LANG is the language setting
还会有一个基本身份验证(用户名/密码)
My application(.NET 4.0) needs to integrate with a webservice. If the webservice did have a WSDL it would be easy to generate proxy class with WCF but this is not possible in this case (No WSDL).
To communicate with this server we will have to send a message with settings and then receiver something like this :
<Desc>
<Make cfe_code="98" cfe_value="Volkswagen" label="Märke" value="Volkswagen"/>
<ModelName cfe_code="99" cfe_value="Touareg" label="Modell" value="Touareg"/>
<BodyType cfe_code="212" cfe_value="22" label="Kaross" value="SUV"/>
<ModelYear cfe_code="8" cfe_value="2005" label="Årsmodell" value="2005"/>
...
</Desc>
So how do I solve this? Do I have to dig in to XMLDocuments and do it all manual?
Edit1: The URL to the webservice might look like this : http://MyServer.com/ag/get?UID=9999999999.eu_vddsall_xml&VINREG=STU123&LANG=en
UID is static
VINREG is the registration ID of the object that we need information about
LANG is the language setting
There will also be a basic authentication (Username/Password)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这似乎是一个非 SOAP 端点,在这种情况下,没有通过 WSDL 公开服务元数据的标准方法。
本质上,您需要做的是创建类来表示 Desc 及其子元素:
这些类表示您将从服务调用中接收到的数据。接下来,创建一个表示服务方法的
ServiceContract
:最后,使用 IChannelFactory 创建客户端代理的实例并使用该服务。
请参阅 这篇博客文章介绍了如何创建 WCF 客户端以使用 WCF 客户端使用 RESTful 服务。
This appears to be a non-SOAP endpoint, in which case there is not a standard way to expose service metadata via a WSDL.
Essentially what you'd need to do is create classes to represent the
Desc
and its child elements:These classes represent the data you will receive from the service call. Next, create a
ServiceContract
that represents the service method:Lastly, create an instance of a client proxy using IChannelFactory and consume the service.
See this blog post on how to create a WCF client to consume a RESTful service using a WCF client.