0

WSDL への URL を指定してプロキシ クラスを生成しました。

次のように、エンドユーザーがサービスの URL を特定の URL に変更できるようにする必要があります。

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

問題は、この URL が WSDL を指してはならず、WSDL 内にあるバインディング アドレス (wsdl:service -> wsdl:port -> wsdl:address) である必要があることです (これは SAP Web サービスです。理解しています)。そのため、バインディング アドレスを使用する必要があります)。

XDocument クラスを使用してその値を取得することを考えていますが、バインド アドレスを取得するための "組み込み" 機能が WCF または Web サービスにあるかどうか疑問に思っています。ありがとうございました。

4

1 に答える 1

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
于 2012-11-07T21:14:56.750 に答える