首页 > 解决方案 > 使用.net core mvc从wsdl获取soap web服务中的操作(又名方法或函数)

问题描述

我需要一种方法来使用 Web 服务的 WSDL 在 SOAP Web 服务中查找操作。

标签: asp.net-mvcweb-servicessoapasp.net-corewsdl

解决方案


您可以使用公共 wsdl url,例如http://www.thomas-bayer.com/axis2/services/BLZService?wsdlhttps://www.lb.lt/webservices/ExchangeRates/ExchangeRates.asmx?WSDL进行测试. 解决方法如下: 1)获取wsdl url的内容。2) 解析操作的 wsdl xml。代码如下。

public string[] GetOperations(string wsdlURL)
{

    //string httpResponseMessage;
    List<string> sList = new List<string>();
    string[] s = { };
    string result = GetWSDLContent(wsdlURL);
    XmlDocument doc = new XmlDocument();
        doc.LoadXml(result);

    var nsmgr = new XmlNamespaceManager(doc.NameTable);
    nsmgr.AddNamespace("wsdl", "http://schemas.xmlsoap.org/wsdl/");
    var nl = doc.SelectNodes("//wsdl:portType/wsdl:operation", nsmgr);
    for (var i=0; i<nl.Count; i++ ) 
    {
        sList.Add(nl[i].Attributes["name"].Value.ToString());
    }
    s = sList.ToArray();
    return s;
}
public string GetWSDLContent(string wsdlURL)
{
    HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(wsdlURL);
    myRequest.Method = "GET";
    WebResponse myResponse = myRequest.GetResponse();
    StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
    string result = sr.ReadToEnd();
    sr.Close();
    myResponse.Close();
    return result;
}

推荐阅读