C#调用和实现WebService,纯手工打造!
在这个教程中,我们将学习如何使用C#语言调用和实现WebService。Web服务是一种基于网络的通信协议,用于让不同的应用程序之间进行交互。Web服务提供数据和方法,供其他应用程序使用。我们将介绍如何使用C#语言编写简单的Web服务并以两个示例说明如何调用它。
实现WebService
以下是基于C#语言手工编写的一个简单的Web服务,它提供了一个方法,用于返回两个数字的和。我们需要通过Visual Studio创建一个新的Web项目,然后在其中添加一个Web服务。
using System.Web.Services;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class MyWebService : WebService {
[WebMethod]
public int Add(int num1, int num2) {
return num1 + num2;
}
}
该代码声明了一个名为MyWebService
的Web服务,其中包含一个名为Add的方法,该方法接受两个整数,并返回它们的和。现在我们的Web服务已经编写完成。
使用C#语言调用WebService
现在我们将会学习如何使用C#语言调用我们刚刚编写的Web服务。我们需要在Visual Studio中创建一个新的控制台应用程序,通过HttpWebRequest类来调用我们的Web服务。
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Xml;
class Program
{
static void Main(string[] args)
{
string url = "http://localhost/MyWebService.asmx";
string soapStr = string.Format(@"<?xml version=""1.0"" encoding=""utf-8""?>
<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
xmlns:xsd=""http://www.w3.org/2001/XMLSchema""
xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
<soap:Body>
<Add xmlns=""http://tempuri.org/"">
<num1>{0}</num1>
<num2>{1}</num2>
</Add>
</soap:Body>
</soap:Envelope>", 1, 2);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Headers.Add("SOAPAction", "\"http://tempuri.org/Add\"");
req.ContentType = "text/xml;charset=\"utf-8\"";
req.Accept = "text/xml";
req.Method = "POST";
Stream stm = req.GetRequestStream();
StreamWriter stmw = new StreamWriter(stm);
stmw.Write(soapStr);
stmw.Flush();
stm.Close();
WebResponse resp = req.GetResponse();
stm = resp.GetResponseStream();
StreamReader r = new StreamReader(stm);
string strResponse = r.ReadToEnd();
Console.WriteLine(strResponse);
}
}
该示例中,我们通过HttpWebRequest
来创建请求。我们需要构建一个SOAP格式的数据包,并设置SOAPAction
头。另外,我们还需要设置请求的类型为“POST”,才能够向Web服务发送请求。
另一个示例
让我们以另一个示例来展示如何使用C#调用Web服务。假设我们有一个Web服务可以返回当前时间,我们需要知道如何使用C#调用它。
using System;
using System.Net;
class Program
{
static void Main(string[] args)
{
string url = "http://localhost/MyWebService.asmx/GetCurrentTime";
WebClient client = new WebClient();
client.Headers.Add("Content-Type", "application/json");
string data = client.DownloadString(url);
Console.WriteLine(data);
}
}
该示例中,我们使用WebClient
类来创建一个Web请求,并设置请求的内容类型。然后使用DownloadString
方法从Web服务中读取返回的数据。
结论
本教程中,我们学习了如何使用C#语言实现Web服务,并使用HttpWebRequest和WebClient两种方式调用Web服务。在实践中,我们可以根据需求,灵活选择适合自己的方式进行调用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#调用和实现WebService,纯手工打造! - Python技术站