2010-01-08 13 views
1

如何在運行時從ASP.NET代碼調用SOAP webservices,而不是在編譯時將它們作爲引用/ web引用添加。 這是假設應用程序知道Web服務url的列表,調用每個URL所需的方法和參數。在ASP.NET中調用SOAP webservices運行時間

在此先感謝 維傑

回答

1

假設你想調用下面的方法:

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。

+0

非常感謝您的快速回復。讓我試試這個。 Rgds Vijay – vijay 2010-01-08 12:11:21

+0

謝謝Darin。它工作得很好。 – vijay 2010-02-06 13:15:34