WebService是运行于服务端(一般放在信息服务器上的)让客户端来调用的。

以下开发两个简单的实例

1.自己开发服务端自己调用(vs2010)

1).菜单:“新建-项目”,在打开的窗体中选择,如下图:

2).在“项目解决方案”中右击此项目并“添加-新建项”,然后选择"web服务",如下图

3).打开新添加的页面,在其中加入四个函数,一定在四个函数的上方加上“[WebMethod]”,这是说明让客户端来调用的函数,如果上面没有或注释掉,就表示客户端不能访问它。下面把它默认的HelloWord函数注释,源码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services; namespace MyWebServices
{
/// <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(Description="相加")]
public double Add(double num1, double num2)
{
return num1 + num2;
} [WebMethod(Description = "相减")]
public double Sub(double num1, double num2)
{
return num1 - num2;
} [WebMethod(Description = "相乘")]
public double Mul(double num1, double num2)
{
return num1 * num2;
} [WebMethod(Description = "相除")]
public double Div(double num1, double num2)
{
if (num2 != )
return num1 / num2;
else
return ;
}
}
}

4).在浏览器中运行WebService1.asmx,即在“解决方案”中右键WebService1.asmx,在"浏览器中运行",以下为运行图,会发现HelloWord函数没显示出来

5).开发客户端。

  • 建立一空的WebApplication程序
  • 在“解决方案”中右键此项目“添加web引用”,会弹出一窗体,让用户输入wsdl的URL.设置Web引用名的名称并点击添加引用,此时会在项目中出现一个这样服务的图标。如下图:
  • 增加一webForm,它的HTML源码为:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!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 runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div> <input id="Text1" type="text" runat="Server" /><select id="Select1" name="D1" runat="Server" >
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select><input id="Text2" type="text" runat="Server" /><asp:Button ID="Button1"
runat="server" Text="=" onclick="Button1_Click" />
<input id="Text3" type="text" runat="Server" /></div>
</form>
</body>
</html>

cs源码(按钮事件):

 protected void Button1_Click(object sender, EventArgs e)
{
string op = Select1.Value;
if (Text1.Value == string.Empty || Text2.Value == string.Empty)
return;
double num1 = double.Parse(Text1.Value);
double num2 = double.Parse(Text2.Value);
double result=;
MyTest.WebService1 ws=new MyTest.WebService1();
if (op.Equals("+"))
result = ws.Add(num1, num2);
else if (op.Equals("-"))
result = ws.Sub(num1, num2);
else if (op.Equals("*"))
result = ws.Mul(num1, num2);
else if (op.Equals("/"))
result = ws.Div(num1, num2);
Text3.Value = result.ToString(); }
  • 运行客户端,如下图,此时成功运行:

2.调用其它的WebService服务,此例我们调用http://www.webxml.com.cn中的查询手机号码的服务,打开此网站下的"全部WebService",可以看到如下图:

1).新建 一个普通的WinForm程序,界面如下:

2).在新建的项目上右键"添加服务引用",在地址栏上粘贴http://www.webxml.com.cn中手机查询服务中的随便一个地址,命名空间自己设置,如下图:

3).点击上图中的“确定”按钮,此时会把这个相关的服务加入到此项目中,如图:

4).在winForm中的button源码如下:

        private void button1_Click(object sender, EventArgs e)
{
ServiceReference1.MobileCodeWSSoapClient mms = new ServiceReference1.MobileCodeWSSoapClient("MobileCodeWSSoap12"); *
string s= mms.getMobileCodeInfo(this.textBox1.Text.Trim(),"");
MessageBox.Show(s); }

*号处的参数是说明用soap的哪种协议的,我们在添加webservice服务后会自动增加一个app.config文件,打开此文件会在文件下面看到如下的代码:

<client>
<endpoint address="http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx"
binding="basicHttpBinding" bindingConfiguration="MobileCodeWSSoap"
contract="ServiceReference1.MobileCodeWSSoap" name="MobileCodeWSSoap" />
<endpoint address="http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx"
binding="customBinding" bindingConfiguration="MobileCodeWSSoap12"
contract="ServiceReference1.MobileCodeWSSoap" name="MobileCodeWSSoap12" />
</client>

此参数输入name的值就可以了。

5).运行效果图:

终结:

在调用时先引用WebService服务,再创建它的实例,然后再调用它的函数即可。

WebService开发应用的更多相关文章

  1. WebService中方法的相关注意事项

    2014-11-14 在WebService中定义方法,有一些注意的地方: (1) 方法上面需要增加 [WebMethod] 属性,标志该方法是一个WebService方法: (2)方法的返回值可以为 ...

  2. XE5 ANDROID平台 调用 webservice

    服务端需要midas.dll   XE5对android的平台支持很有吸引力,虽然目前用来直接开发应用到安卓市场卖赚钱可能性估计不大(安卓市场目前国内好像都是免费的天下),但是对于企业应用很是很有帮助 ...

  3. webservice第二篇【自定义webservice服务、soa、uddi概念、soap协议】

    自定义webservice服务 我们在上一章节中已经使用wsimport生成本地代理来调用webservice的服务了,其实我们自己写的web应用程序也是可以发布webservice的 我们发布了we ...

  4. WebService就是这么简单

    WebService介绍 首先我们来谈一下为什么需要学习webService这样的一个技术吧.... 问题一 如果我们的网站需要提供一个天气预报这样一个需求的话,那我们该怎么做????? 天气预报这么 ...

  5. webservice入门简介

    为了梦想,努力奋斗! 追求卓越,成功就会在不经意间追上你 webservice入门简介 1.什么是webservice? webservice是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓的远 ...

  6. java之WebService

    链接:https://www.jianshu.com/p/1c145315da47 WebService介绍 首先我们来谈一下为什么需要学习webService这样的一个技术吧.... 问题一 如果我 ...

  7. webService

    什么是webService WebService,顾名思义就是基于Web的服务.它使用Web(HTTP)方式,接收和响应外部系统的某种请求.从而实现远程调用.  1:从WebService的工作模式上 ...

  8. 开始webservice了

    一.WebService到底是什么 一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用 ...

  9. Spring WebService入门

    Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布 ...

随机推荐

  1. magento 常用方法集锦

    1,获得store的配置变量 Mage::getStoreConfig('sectionname/groupname/fields'); 1 Mage::getStoreConfig('section ...

  2. PHP计算2点经纬度之间的距离

    hp] view plaincopy function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longit ...

  3. react 编写组件 五

    看以下示例了解如何定义一个组件 // 定义一个组件LikeButton var LikeButton = React.createClass({ // 给state定义初始值 getInitialSt ...

  4. 第四篇:Eclipse Android app 工程迁移到 Android Studio

    前言:这种问题当然在所难免,所幸android studio的project 工程目录远比 Eclipse 要了然. 目录对比 我们在Eclipse中创建一个EclipseDemo的Android项目 ...

  5. android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地

    http://blog.csdn.net/jason0539/article/details/45602655 应用发生crash之后要查看log,判断问题出在什么地方,可是一旦应用发布出去,就要想办 ...

  6. Codevs 1689 建造高塔

    1689 建造高塔 时间限制: 1 s 空间限制: 128000 KB 题目等级 : **钻石 Diamond** 题目描述 Description n有n种石块,石块能无限供应.每种石块都是长方体, ...

  7. 深入了解overflow

    1.如果overflow-x与overflow-y值不同   其中一个赋值为visiable,另一个赋值scroll/auto/hidden,那么visiable会重置为auto 2.overflow ...

  8. 在Laravel5.* 中使用 AdminLTE

    在Laravel5.* 中使用 AdminLTE AdminLTE是一个很棒的单纯的由 HTML 和 CSS 构建的后台模板,在这片文章中,我将讲述如何将 AdminLTE 和 Laravel 优雅的 ...

  9. 定时工作方式2实现1s定时

    定时器的几种工作方式中,除0和前面的1类似都需要初始化计数值,然后开始计数,计数溢出后,需要再次控制计数的初值,但工作模式2不同于此,工作方式2将THx和TLx分开处理,将初值存放在THx中,计数时只 ...

  10. Ubuntu15.10 编译VLC Android(安卓)过程记录

    持续更新中... 最后一次修改于 2016-03-20 15:33:45 1.必要库的安装 除基本编译环境(gcc.g++等外),需要额外安装如下的库(用于下载必要的依赖文件) (1)JDK 推荐安装 ...