一个简单的webservice调用

时间:2022-03-09 10:27:56

我们先创建一个简单空web应用程序
一个简单的webservice调用
然后添加新建项目
一个简单的webservice调用
//我们创建一个peson对象,产生数据标识返回

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services; namespace 创建简单的WebService服务
{
/// <summary>
/// WebService1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{ [WebMethod]
public string HelloWorld()
{
return "Hello World";
} [WebMethod]//必须用它标记,不然获取不到
public List<Person> GetPeson()
{
List<Person> list = new List<Person>();
for (int i = ; i < ; i++)
{
list.Add(new Person { Name="甲"+i,Age=i+,Sex=i%==?Sex.男:Sex.女,Tel=-+i,Adress="昆明市盘龙区"+i+"号"});
}
return list;
} [Flags]
public enum Sex {
男,

}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Sex Sex { get; set; }
public int Tel { get; set; }
public string Adress { get; set; } }
}
}

我们所需要的数据服务已经创建好了,现在发布服务,我们发布服务的方式有恨多种,可以生成,发布包等

一个简单的webservice调用

我们服务发布了,我们然后引用,需要一个宿主,宿主可以根据自己需要随便添加,这里添加一个wpf宿主来调用数据显示,

添加引用服务,注意服务一定要发布,不然会找不到,报错

一个简单的webservice调用

这里我们可以通过发现的服务,到游览器看看有什么:

一个简单的webservice调用

我们可以看到服务中所标记的GetPeson(),HelloWorld()方法;

wpf项目中已经引用了服务,下面展示如何使用:

一个简单的webservice调用我们来使用服务:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes; namespace 调用WebService数据
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
//服务使用
ServiceReference1.WebService1SoapClient client;
public MainWindow()
{
InitializeComponent();
client = new ServiceReference1.WebService1SoapClient();
this.Loaded += new RoutedEventHandler(MainWindow_Loaded); // //异步,我们可以订阅GetPesonCompleted事件
// this.client.GetPesonCompleted += new EventHandler<ServiceReference1.GetPesonCompletedEventArgs>(client_GetPesonCompleted);
} //void client_GetPesonCompleted(object sender, ServiceReference1.GetPesonCompletedEventArgs e)
//{
// throw new NotImplementedException();
//} void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
//type1这种方式并不是很好,出现问题有时并不受控制,这是同步调用 dataGrid1.AutoGenerateColumns = true;
dataGrid1.ItemsSource= client.GetPeson();//获取数据绑定
//出现一个问题多生成一列,不知道是什么状况,隐藏多生成的第一列
dataGrid1.Columns[].Visibility =Visibility.Collapsed; }
}
}

多生成一列,没看懂什么状况,有人知道的话说下一个简单的webservice调用

最终效果,我们可以看到通过ws获取到数据,

一个简单的webservice调用

上面调用数据是通过同步的方式调用,我们也可以设置成异步的;

一个简单的webservice调用

一个简单的webservice调用

我想异步大家都懂,就不说了,更多WCF问题以后说明,文章写写得很菜,大家勿喷..........

代码示例:http://files.cnblogs.com/BABLOVE/%E5%88%9B%E5%BB%BA%E7%AE%80%E5%8D%95%E7%9A%84WebService%E6%9C%8D%E5%8A%A1.rar