получение операций (или методов или функций) в мыльном веб-сервисе из wsdl с .net core mvc - PullRequest
0 голосов
/ 21 сентября 2018

Мне нужен способ найти операции в веб-службе SOAP с использованием WSDL веб-службы.

1 Ответ

0 голосов
/ 25 сентября 2018

Вы можете использовать общедоступный URL-адрес wsdl, например, http://www.thomas -bayer.com / axis2 / services / BLZService? Wsdl или https://www.lb.lt/webservices/ExchangeRates/ExchangeRates.asmx?WSDL для тестирования.Решение заключается в следующем: 1) получить содержимое URL-адреса wsdl.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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...