asp.net-mvc - 使用.net core mvc从wsdl获取soap web服务中的操作(又名方法或函数)
问题描述
我需要一种方法来使用 Web 服务的 WSDL 在 SOAP Web 服务中查找操作。
解决方案
您可以使用公共 wsdl url,例如http://www.thomas-bayer.com/axis2/services/BLZService?wsdl或https://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;
}
推荐阅读
- javascript - 访问数组属性的编译错误
- sql - Select * From Table Where Name in like(通配符)
- angular8 - (ngx-admin/Nebular) 如何将 Grid 系统与 nebular 集成?
- mongodb - Mongoose 从多个文档更新多个子文档
- java - 如何使用 WebView 为 onClickListener 设置线性布局
- intellij-idea - 如果已通过 JetBrains Toolbox 安装 IntelliJ IDEA,如何在 Windows 上下文菜单中提供“在 IntelliJ IDEA 中打开此项目”选项?
- gcloud - 无法下载谷歌凭据 json 文件
- javascript - 如何使用 ES6 HOF Javascript 在数组中查找重复对象(所有键值对都应该相同)
- python - 在 Python 中使用不同的符号预处理文本数据
- amazon-web-services - 如何使用 AWS Lambda 捕获无服务器网站截图?