首页 > 代码库 > 实战基础技能(18)--------用ASP.NET调用Web Service

实战基础技能(18)--------用ASP.NET调用Web Service

打开VS2010,打开“文件-新建-网站”,选择“ASP.NET网站

选好存储位置,语言后点击确定,进入默认页面。然后先添加Web引用,把WebService引到当前的工程里面。方法是:在资源管理器中点击右键,选择添加Web 引用,调出对话框:

 

URL中填入,前面写好的WebService运行后浏览器上面显示的地址,点击“前往”按钮,如上图,就会显示出所引用的WebService中可以调用的方法,然后点击“添加引用”,就将webservice引用到了当前的工程里面 ,如下图,解决方案中会出现引进来的WebService文件

我们在这就练习调用webservice的四个方法,做一个简单的调用的例子,先在网站的前台添加几个控件,代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head id="Head1" runat="server">    <title>Webservice调用实例</title></head><body>    <form id="form2" runat="server">        <div>            <asp:TextBox ID="Num1" runat="server"></asp:TextBox>            <select id="selectOper" runat = "server">                <option>+</option>                <option>-</option>                <option>*</option>                <option>/</option>            </select>            <asp:TextBox ID="Num2" runat="server"></asp:TextBox>            <span id = E runat = "server"></span>            <asp:TextBox ID="Result" runat="server"></asp:TextBox>        </div></form></body></html>

然后在后台写调用的代码,调用之前和使用其它的对象一样,要先实例化,实例化的方法是localhost.Service a =new localhost.Service();然后就可以通过a来访问WebService里面提供的方法了。在这个例子里面,动态的创建了一个button控件来触发WebService的调用,后台代码如下:

using System;using System.Collections.Generic;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace WebApplication2{    public partial class _Default : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            //在页面加载的时候动态创建一个按钮,在它的事件里调用Webservice            Button btn = new Button();            btn.Width = 20;            btn.Text = " = ";            btn.Click += new EventHandler(btn_Click);            E.Controls.Add(btn);        }        /// <summary>        /// 定义动态创建Button的Click事件,在这个事件中调用Webservice        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        void btn_Click(object sender, EventArgs e)        {            if (Num1.Text != "" && Num2.Text != "")            {                //实例化引用的webservice对象                localhost.Service1 WebserviceInstance = new localhost.Service1();                int Oper = selectOper.SelectedIndex;                switch (Oper)                {                    //通过实例化的webservice对象来调用Webservice暴露的方法                    case 0:                        Result.Text = WebserviceInstance.addition(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString();                        break;                    case 1:                        Result.Text = WebserviceInstance.subtract(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString();                        break;                    case 2:                        Result.Text = WebserviceInstance.multiplication(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString();                        break;                    case 3:                        Result.Text = WebserviceInstance.division(double.Parse(Num1.Text), double.Parse(Num2.Text)).ToString();                        break;                }            }        }    }}

运行后可以看到效果,如下图所示,在前面两个Textbox里面输入两个操作数,在中间的下拉列表中选择操作符,然后点击“=”号,将计算的结果输出到第三个Textbox里面。

 

其中的报错解决

整个计算并不是在本地进行的,是在Web服务端进行计算的然后将结果通过XML返还给了调用方的,所以,在运行该程序的时候,WebService程序还必须启动,否则会报无法连接远程服务器的异常

 

实战基础技能(18)--------用ASP.NET调用Web Service