分享
 
 
 

蛙蛙推荐: 用web服务传递Dataset的一个简单例子

王朝asp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

蛙蛙推荐: 用web服务传递Dataset的一个简单例子

首先声明:偶是asp.net新手,写的粗糙的地方欢迎高手指导改正,这个例子是抽时间写的,没有做过多的优化,比如说把web服务加入本地的application缓存起来,还有加入安全的身份验证等等,web服务的出现对我们来说无疑是件大好事,我们得慢慢来掌握这门技术,先从最简单的例子开始.

一般来说web服务使用的过程是这样的:web服务付费用户通过查询uddi目录查找web服务的disco文件,然后查询disco文件找出web服务中的wsdl描述的url,使用wsdl文件就可以创建和理解发送到以及web服务发送过来的soap数据包.这样数据就可以完成一次传递了,顺便说一下,soap可以传递的类型很多,如果单纯用post或者get的话传输的数据类型比较单一,应用起来也比较复杂,不过下次我打算写个用用asp,vbs,xmlhttp来应用web服务的一个例子.

在使用示例之前,请确认你安装了.NET框架还有SQLSERVER2000以及它的默认示例数据库,示例中数据库的连接代码请修改成适合你的数据库环境的代码,比如说帐户和密码的部分.

打开vs.net,新建一个asp.net(C#)的解决方案wawa,再添加一个web服务:wawaService.asmx

在原有的基础上再导入一个命名空间,用以下语句:

using System.Data.SqlClient;

然后加一个公有方法wawa_getDataSet,这个方法是是调用getDataSet方法并返回一个DataSet,最后确保代码如下

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Diagnostics;

using System.Web;

using System.Web.Services;

using System.Data.SqlClient;

namespace wawa

{

[WebService(Name= "wawa Service",

Description="wawa",

Namespace="wawa")

]

public class wawaService : System.Web.Services.WebService

{

[WebMethod(Description="wawa")]

public DataSet wawa_getDataSet(string str)

{

return getDataSet(str_wawa_sql);

}

private DataSet getDataSet(string sql){

string connString ="server=(local);database=Northwind;uid=sa;pwd=sa;";

SqlConnection conn=new SqlConnection(connString);

conn.Open();

SqlDataAdapter da=new SqlDataAdapter(sql,conn);

DataSet ds=new DataSet();

da.Fill(ds,"Employees");

return ds;

}

public wawaService()

{

//构造函数

InitializeComponent();

}

#region 组件设计器生成的代码

//Web 服务设计器所必需的

private IContainer components = null;

private void InitializeComponent()

{

}

protected override void Dispose( bool disposing )

{

if(disposing && components != null)

{

components.Dispose();

}

base.Dispose(disposing);

}

#endregion

}

}

这时候打开http://192.168.0.110/wawa/wawaService.asmx测试一下(注意IP地址换成你自己机子的IP,不行就LOCALHOST)

现在我们把这个web服务在本地生成代理,需要用到wsdl.exe命令,这个命令应该是装了.net框架后就有的,在系统的命令模式下键入如下信息:

(注意一点,如果直接在CMD命令模式下无法运行wsdl的话,查找这个文件,并把它的所在路径配置到服务器的环境变量的系统变量的PATH变量里,记着各个路径之间用半角的英文符分号隔开哦,这个地方可能说的有点儿晕,没听明白的话,直接运行"Visual Studio .NET 2003 命令提示"工具就可以运行wsdl命令了,下面的csc命令一样,有人说:"Visual Studio .NET 2003 命令提示"在哪儿呢,我倒.

wsdl /language:CS /namespace:wawa /out:wawaProxy.cs http://192.168.0.110/wawa/wawaService.asmx?WSDL

显示信息和以下类似:

E:\me\web.net\wawa>wsdl /language:CS /namespace:wawa /out:wawaProxy.cs http://19

2.168.0.110/wawa/wawaService.asmx?WSDL

Microsoft (R) Web 服务描述语言实用工具

[Microsoft (R) .NET Framework,版本 1.1.4322.573]

Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

正在写入文件“wawaProxy.cs”。

E:\me\web.net\wawa>

用记事本打开生成的wawaProxy.cs文件,观察一下,差不多如下

//------------------------------------------------------------------------------

// <autogenerated>

// This code was generated by a tool.

// Runtime Version: 1.1.4322.573

//

// Changes to this file may cause incorrect behavior and will be lost if

// the code is regenerated.

// </autogenerated>

//------------------------------------------------------------------------------

//

// 此源代码由 wsdl, Version=1.1.4322.573 自动生成。

//

namespace wawa {

using System.Diagnostics;

using System.Xml.Serialization;

using System;

using System.Web.Services.Protocols;

using System.ComponentModel;

using System.Web.Services;

/// <remarks/>

[System.Diagnostics.DebuggerStepThroughAttribute()]

[System.ComponentModel.DesignerCategoryAttribute("code")]

[System.Web.Services.WebServiceBindingAttribute(Name="wawa ServiceSoap", Namespace="wawa")]

public class wawaService : System.Web.Services.Protocols.SoapHttpClientProtocol {

/// <remarks/>

public wawaService() {

this.Url = "http://192.168.0.110/wawa/wawaService.asmx";

}

/// <remarks/>

[System.Web.Services.Protocols.SoapDocumentMethodAttribute("wawa/wawa_getDataSet", RequestNamespace="wawa", ResponseNamespace="wawa", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]

public System.Data.DataSet wawa_getDataSet() {

object[] results = this.Invoke("wawa_getDataSet", new object[0]);

return ((System.Data.DataSet)(results[0]));

}

/// <remarks/>

public System.IAsyncResult Beginwawa_getDataSet(System.AsyncCallback callback, object asyncState) {

return this.BeginInvoke("wawa_getDataSet", new object[0], callback, asyncState);

}

/// <remarks/>

public System.Data.DataSet Endwawa_getDataSet(System.IAsyncResult asyncResult) {

object[] results = this.EndInvoke(asyncResult);

return ((System.Data.DataSet)(results[0]));

}

}

}

这时候我们要把wawaProxy.cs文件编译成动态链接库,用如下命令

csc /t:library /r:System.Web.Services.dll /out:wawaProxy.dll wawaProxy.cs

出现的提示类似于下面:

E:\me\web.net\wawa>csc /t:library /r:System.Web.Services.dll /out:wawaProxy.dll

wawaProxy.cs

Microsoft (R) Visual C# .NET 编译器版本 7.10.3052.4

用于 Microsoft (R) .NET Framework 版本 1.1.4322

版权所有 (C) Microsoft Corporation 2001-2002。保留所有权利。

然后把生成的wawaProxy.dll拷贝到当前目录下的BIN目录中.

下面添加个wawaService.aspx的窗体,这个窗体用来调用web服务并显示数据,再在后台编码中导入两个命名空间,

using System.Web.Services;

using System.Data.SqlClient;

拖一个datagrid进来,取名为DataGridwawa

保证页面类似如下所示:

<%@ Page language="c#" Codebehind="wawaService.aspx.cs" AutoEventWireup="false" Inherits="wawa.wawaService1" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

<HEAD>

<title>wawaService</title>

<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">

<meta name="CODE_LANGUAGE" Content="C#">

<meta name="vs_defaultClientScript" content="JavaScript">

<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

</HEAD>

<body MS_POSITIONING="GridLayout">

<form id="Form1" method="post" runat="server">

<asp:DataGrid id="DataGridwawa" style="Z-INDEX: 101; LEFT: 168px; POSITION: absolute; TOP: 232px"

runat="server"></asp:DataGrid>

</form>

</body>

</HTML>

现在打开wawaService.aspx的后台编码文件wawaService.aspx.cs,在Page_Load方法中引用web服务,并且调用web服务返回的DataSet绑定DataGridwawa

写完了之后代码类似如下所示:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using System.Web.Services;

using System.Data.SqlClient;

namespace wawa

{

public class wawaService1 : System.Web.UI.Page

{

protected System.Web.UI.WebControls.DataGrid DataGridwawa;

private void Page_Load(object sender, System.EventArgs e)

{

wawaService Servicewawa =new wawaService();

string str_wawa_sql="SELECT EmployeeID,TitleOfCourtesy ,FirstName,LastName FROM Employees";

DataSet dswawa=new DataSet();

dswawa=Servicewawa.wawa_getDataSet(str_wawa_sql);

DataGridwawa.DataSource=dswawa;

DataGridwawa.DataBind();

}

#region Web 窗体设计器生成的代码

override protected void OnInit(EventArgs e)

{

InitializeComponent();

base.OnInit(e);

}

private void InitializeComponent()

{

this.Load += new System.EventHandler(this.Page_Load);

}

#endregion

}

}

好了,现在把wawaService.aspx设置为起始页,把Ctrl+Shilt+B,生成解决方案,

打开http://192.168.0.110/wawa/wawaService.aspx(当然,具体的地址要看你机器的IP了)地址就会看到你想要的效果了,

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有