简体   繁体   中英

How to get the binding address from a WSDL file

I generated a proxy class given a URL to a WSDL.

I need to let the end-user change the service's URL to his specific URL, like this:

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

The issue is that this URL should not point to the WSDL, it should be the binding address which is found within the WSDL (wsdl:service -> wsdl:port -> wsdl:address) (this is a SAP web service, I understand that is why I must use the binding address).

I am thinking of using the XDocument class to get that value, but I am wondering if there is any "built-in" functionality in WCF or web services to get the binding address. Thank you.

I did a small function in VB.NET (sorry!) based on code at Parse Complex WSDL Parameter Information . Hope it helps.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM