WebService 服务可以返回任何可序列化的对象.本文代码给出返回基本数据类型及实体类结构示例和调用代码示例.
WebService代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
namespace StudentServer
{
/// <summary>
/// 本类实现WebService服务
/// 提供对各种数据类型的返回例子
/// 包括:
/// 基本数据类型(string,ini,bool,long,float等)
/// 类结构型(class),必须是可序列化的类
/// DataSet类型
/// </summary>
public class Demo : System.Web.Services.WebService
{
public Demo()
{
//CODEGEN: 该调用是 ASP.NET Web 服务设计器所必需的
InitializeComponent();
}
#region 组件设计器生成的代码
//Web 服务设计器所必需的
private IContainer components = null;
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if(disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion
// WEB 服务示例
// HelloWorld() 示例服务返回字符串 Hello World
// 若要生成,请取消注释下列行,然后保存并生成项目
// 若要测试此 Web 服务,请按 F5 键
/// <summary>
/// 字符串型
/// </summary>
/// <returns>Hello World</returns>
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
/// <summary>
/// 整型
/// </summary>
/// <returns>Int</returns>
[WebMethod]
public int GetInt()
{
return 1234;
}
/// <summary>
/// 布尔型
/// </summary>
/// <returns>Bool</returns>
[WebMethod]
public bool GetBool()
{
return true;
}
/// <summary>
/// 返回实体类
/// 必须是已序列化的类
/// </summary>
/// <returns>学生类</returns>
[WebMethod]
public Student GetStudent()
{
Student stu = new Student();
stu.Name = "张三";
stu.Age = 25;
stu.Sex = true;
return stu;
}
/// <summary>
/// 返回DataSet数据类型
/// </summary>
/// <returns>DataSet</returns>
[WebMethod]
public DataSet GetDataSet()
{
DataSet ds = new DataSet();
return ds;
}
}
//指示下面的类可序列化
/// <summary>
/// 学生基本信息类
/// </summary>
[Serializable]
public class Student
{
/// <summary>
/// 构造函数
/// </summary>
public Student()
{
}
private string name;
/// <summary>
/// 姓名
/// </summary>
public string Name
{
get
{
return name;
}
set
{
name=value;
}
}
private bool sex;
/// <summary>
/// 性别--布尔型变量真为女,假为男
/// </summary>
public bool Sex
{
get
{
return sex;
}
set
{
sex=value;
}
}
private int age;
/// <summary>
/// 年龄
/// </summary>
public int Age
{
get
{
return age;
}
set
{
age=value;
}
}
}
#endregion
}
调用WebService服务示例代码如下:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using StudentClient.localhost;
namespace StudentClient
{
/// <summary>
/// 调用学生信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnStu_Click(object sender, System.EventArgs e)
{
//实例化服务类
Demo dm = new Demo();
//调用返回实体类服务方法
Student stu = dm.GetStudent();
txtName.Text = stu.Name;
txtSex.Text = (stu.Sex==false?"女":"男");
txtAge.Text = stu.Age.ToString();
}
/// <summary>
/// DataSet数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDataSet_Click(object sender, System.EventArgs e)
{
//实例化服务类
Demo dm = new Demo();
txtOther.Text = dm.GetDataSet().Tables.Count.ToString();
}
/// <summary>
/// 返回字符串
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnHello_Click(object sender, System.EventArgs e)
{
//实例化服务类
Demo dm = new Demo();
txtOther.Text = dm.HelloWorld();
}
/// <summary>
/// 返回整型
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnInt_Click(object sender, System.EventArgs e)
{
//实例化服务类
Demo dm = new Demo();
txtOther.Text = dm.GetInt().ToString();
}
/// <summary>
/// 返回布尔型
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnBool_Click(object sender, System.EventArgs e)
{
//实例化服务类
Demo dm = new Demo();
txtOther.Text = dm.GetBool().ToString();
}
}
}
也可以用过 xmlinclude申明实体类
[XmlInclude(typeof(Student))] //一定要加上 xmlinclude这一句,实体类是可序列化的
[WebMethod]
这里是类方法