在.net平台上如何创建和使用web 服务(C#)

在.net平台上如何创建和使用web 服务(C#)

一、创建web服务类
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

原文地址:https://www.cnblogs.com/no7dw/p/1491193.html