如何从WSDL文件中获取绑定地址

时间:2012-11-07 19:33:17

标签: asp.net .net wcf web-services

我生成了一个给定WSDL URL的代理类。

我需要让最终用户将服务的URL更改为他的特定URL,如下所示:

ServiceProxy.Url = [URL set by end-user];

问题是这个URL不应该指向WSDL,它应该是在WSDL中找到的绑定地址(wsdl:service - > wsdl:port - > wsdl:address)(这是一个SAP)网络服务,我明白这就是我必须使用绑定地址的原因。)

我正在考虑使用XDocument类来获取该值,但我想知道WCF或Web服务中是否有任何“内置”功能来获取绑定地址。谢谢。

1 个答案:

答案 0 :(得分:0)

我根据Parse Complex WSDL Parameter Information的代码在VB.NET中做了一个小功能(对不起!)。希望它有所帮助。

Public Function GetURLFromWSDL(ByVal wsdl As String) As String
    Dim request As HttpWebRequest = WebRequest.Create(wsdl)
    request.ContentType = "text/xml;charset=""utf-8"""
    request.Method = "GET"
    request.Accept = "text/xml"

    Using response As WebResponse = request.GetResponse()
        Using stream As Stream = response.GetResponseStream()
            Dim service As ServiceDescription = ServiceDescription.Read(stream)
            Dim binding As SoapAddressBinding = service.Services(0).Ports(0).Extensions(0)
            Return binding.Location
        End Using
    End Using
End Function