在.net平台上如何创建和使用web 服务(C#)
在.net平台上如何创建和使用web 服务(C#)
1、新建一个asp.net网站,删除原有的default.aspx文件,在添加新项里添加一个web服务,取名DateService.asmx,如下图所示:
添加好后,网站中会出现两个文件,一个在你添加的文件夹下叫DateService.asmx,一个在App_Code文件夹下叫DateService.cs。如下图所示:
DateService.asmx文件中只有一行代码,用来调用DateService.cs文件中定义的服务类。
2、下面我们在DateService.cs文件中编写服务类,来设计两个方法。
方法一:public string CaculateWeekDay(int y, int m, int d)用来计算指定日期是星期几,具体代码如下
[WebMethod]
public string CaculateWeekDay(int y, int m, int d)
{
if (y < 0 || m < 0 || m > 12 || d < 0 || d > 31)
{
return "您输入的日期有误,请重新输入!";
}
DateTime dt = new DateTime(y, m, d);
DayOfWeek dw = dt.DayOfWeek;
string sWeek = "";
switch (dw.ToString())
{
case "Monday": sWeek = "星期一"; break;
case "Tuesday": sWeek = "星期二"; break;
case "Wednesday": sWeek = "星期三"; break;
case "Thursday": sWeek = "星期四"; break;
case "Friday": sWeek = "星期五"; break;
case "Saturday": sWeek = "星期六"; break;
case "Sunday": sWeek = "星期日"; break;
}
return sWeek;
}
[WebMethod]属性用来说明这个方法是web服务方法。
方法二:public string GetDaysBeforeOlympicGames2008()用来计算距离北京2008年奥运会还有几天。具体代码如下:
[WebMethod]
public string GetDaysBeforeOlympicGames2008()
{
DateTime dtOlympic = new DateTime(2008, 8, 8);
DateTime dtNow = DateTime.Now;
int days=1;
for (days = 1; ; days++)
{
dtNow = dtNow.AddDays(1);
if (dtNow.ToShortDateString()==dtOlympic.ToShortDateString())
{
break;
}
}
return "距离北京2008年奥运会还有" + days + "天";
}
3、设计好服务类后,接下来我们测试一下web服务。在visual studio环境中,运行DateService.asmx文件。这将出现一个web页面,其中列出了DateService.asmx文件给出的所有服务(方法),以及一个显示WSDL信息的服务说明链接。如下图所示:
本例中有两个方法,点击CaculateWeekDay将出现如下页面:
输入如下图中的参数,点击调用按钮将输出一个XML文档得到返回值。
将先前创建的网站目录设置成IIS的虚拟目录(ws),供下面的代理类调用。
二、创建web服务代理类(使用web服务)
1、另外在新建一个asp.net网站,右击网站工程选择添加WEB引用。在URL中输入本地部署的web服务的地址(http://localhost/ws/DateService.asmx),如下图所示:
然后点击添加引用按钮,VS会自动生成web服务的代理类。此时网站中将多出一个App_WebReferences文件夹。
2、下面我们在Default.aspx文件中利用生成的代理类调用DateService.asmx提供的web服务。在Default.aspx文件中,添加三个文本框,四个label和一个按钮。如下图所示:
在Default.aspx.cs文件中编写按钮单击事件。以下是按钮单击事件的代码:
先得添加web代理类的命名空间
using localhost;
protected void btnCaculateWeekDay_Click(object sender, EventArgs e)
{
DateService ds=new DateService();
int y=Convert.ToInt32(txtYear.Text.Trim());
int m=Convert.ToInt32(txtMonth.Text.Trim());
int d=Convert.ToInt32(txtDay.Text.Trim());
Label4.Text = ds.CaculateWeekDay(y, m, d);
}
运行Default.aspx文件,在文本框中分别输入2008-8-8,单击按钮,输出结果为星期五。如下图所示:
再在Default.aspx文件中添加一个按钮和一个Label,用来调用GetDaysBeforeOlympicGames2008 web方法。单击事件代码:
protected void btnOlympic_Click(object sender, EventArgs e)
{
DateService ds = new DateService();
Label5.Text = ds.GetDaysBeforeOlympicGames2008();
}
运行结果:
http://www.51leifeng.net/thread-10007-1-1.html