[英]Calling SOAP webservices runtime in ASP.NET
如何在運行時從ASP.NET代碼中調用SOAP Web服務,而不是通過在編譯時將它們添加為引用/ Web引用來實現。 假設應用程序知道Web服務URL的列表,調用每個URL所需的方法和參數。
在此先感謝Vijay
假設您要調用以下方法:
public class Foo
{
public int Id { get; set; }
public string Name { get; set; }
}
[WebMethod]
public string HelloWorld(Foo foo)
{
return "Hello World";
}
您需要構造正確的SOAP信封:
using (WebClient client = new WebClient())
{
client.Headers.Add("SOAPAction", "\"http://tempuri.org/HelloWorld\"");
client.Headers.Add("Content-Type", "text/xml; charset=utf-8");
var payload = @"<?xml version=""1.0"" encoding=""utf-8""?><soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema""><soap:Body><HelloWorld xmlns=""http://tempuri.org/""><foo><Id>1</Id><Name>Bar</Name></foo></HelloWorld></soap:Body></soap:Envelope>";
var data = Encoding.UTF8.GetBytes(payload);
var result = client.UploadData("http://example.com/Service1.asmx", data);
Console.WriteLine(Encoding.Default.GetString(result));
}
並解析生成的XML。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.