本文原创,如需转载,请标明源地址,谢谢合作!http://blog.csdn.net/sue_1989/article/details/6597078

本文的编写IDE为VSTS2008和.NET Framework3.5 ,其他版本的VS或.Net Framework类似

本示例程序说明:从WinForm程序调用本机的WebServices的方法,返回两个数的和

1. 新建>>项目>>ASP.NET Web 服务应用程序,命名为 WebServiceTest,OK

2.打开Service1.asmx.cs,   添加方法 Add(),请注意方法前的 [WebMethod(Description=”Add”)]  为必须。

[csharp] view plaincopyprint?
  1. namespace WebServiceTest
  2. {
  3. /// <summary>
  4. /// Service1 的摘要说明
  5. /// </summary>
  6. [WebService(Namespace = ”http://tempuri.org/”)]
  7. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  8. [ToolboxItem(false)]
  9. // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
  10. // [System.Web.Script.Services.ScriptService]
  11. public class Service1 : System.Web.Services.WebService
  12. {
  13. [WebMethod]
  14. public string HelloWorld()
  15. {
  16. return “Hello World”+“world hello”;
  17. }
  18. [WebMethod(Description=”Add”)]
  19. public int add(int x,int y)
  20. {
  21. return x + y;
  22. }
  23. }
  24. }
namespace WebServiceTest
{/// <summary>/// Service1 的摘要说明/// </summary>[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][ToolboxItem(false)]// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。// [System.Web.Script.Services.ScriptService]public class Service1 : System.Web.Services.WebService{[WebMethod]public string HelloWorld(){return "Hello World"+"world hello";}[WebMethod(Description="Add")]public int add(int x,int y){return x + y;}}
}

3.启动程序,浏览器器会自动启动,如下图表示WebService正常启动

注意浏览器的URL,这个将在后面的应用程序中引用时作为地址,很重要

4. 点击Add, 进入调用, 分别输入参数x,y的值,点击调用,浏览器会跳转,显示如下的XML(一般情况下会在浏览器中显示XML文本)

5.以上步骤表示我们建立的WebService可以正常使用,现在可以不停止此程序的调试,即暂时不关闭此服务的运行,暂时放一边不管它

6. 另打开一个VS,新建>>项目>>Windows窗体应用程序,命名为WindowsFormsApplicationTest>>OK

7.添加控件,三个TextBox, 两个Lable,一个Button

8.引用刚才建立的WebService到这个项目

右键点击解决方案管理器中的项目,选择“添加服务引用”,弹出如下对话框

输入刚才的WebServices的地址,点击前往,添加Service1Soap, 把 命名空间改为 WebServiceTest,确定,就会生成如下的引用,现在就可以使用这个WebService了

结果:

9.添加Button的事件处理

[csharp] view plaincopyprint?
  1. namespace WindowsFormsApplicationTest
  2. {
  3. public partial class mainForm : Form
  4. {
  5. public mainForm()
  6. {
  7. InitializeComponent();
  8. }
  9. private void btnPlus_Click(object sender, EventArgs e)
  10. {
  11. int var1=int.Parse(this.textBox1.Text);
  12. int var2=int.Parse(this.textBox2.Text);
  13. WebServiceTest.Service1SoapClient ws = new WebServiceTest.Service1SoapClient();
  14. int result=ws.add(var1, var2);
  15. this.textBox3.Text = result.ToString();
  16. }
  17. }
  18. }
namespace WindowsFormsApplicationTest
{public partial class mainForm : Form{public mainForm(){InitializeComponent(); }private void btnPlus_Click(object sender, EventArgs e){int var1=int.Parse(this.textBox1.Text);int var2=int.Parse(this.textBox2.Text);WebServiceTest.Service1SoapClient ws = new WebServiceTest.Service1SoapClient();int result=ws.add(var1, var2);this.textBox3.Text = result.ToString();}}
}

上面的处理中用到的string和int型的互转这里就不解释了

关键方法是WebServiceTest.Service1SoapClient ws = new WebServiceTest.Service1SoapClient()

10. 运行

输入数据,点击就OK了

其他的WebService方法大家也可以自己试试。

如果遇到报错说服务没有或异常,是因为WebService的服务没有启动,在第一个程序中其中就行。

如需转载,请标明地址:http://blog.csdn.net/sue_1989/article/details/6597078

C#创建,调用WebS'ervice相关推荐

  1. 【IOC 控制反转】Android 事件依赖注入 ( 事件依赖注入具体的操作细节 | 创建 事件监听器 对应的 动态代理 | 动态代理的数据准备 | 创建调用处理程序 | 创建动态代理实例对象 )

    文章目录 前言 一.创建 事件监听器 对应的 动态代理 二.动态代理 数据准备 三.动态代理 调用处理程序 四.动态代理 实例对象创建 前言 Android 依赖注入的核心就是通过反射获取 类 / 方 ...

  2. 【设计模式】代理模式 ( 动态代理使用流程 | 创建目标对象 | 创建被代理对象 | 创建调用处理程序 | 动态创建代理对象 | 动态代理调用 )

    文章目录 前言 一.静态代理的弊端 二.动态代理的优势 三.动态代理使用流程 1.目标对象接口 2.被代理对象 3.调用处理程序 4.客户端 四.动态生成 代理对象 类 的 字节码 文件数据 前言 代 ...

  3. 破解Kotlin协程创建调用的那些事

    Kotlin协程从1.3正式版除出来也很久了,相比大家伙也比较熟悉了,从Android的AAC架构到后后端都可以见到它的身影,那么问题来了,用了那么久的协程体你知道它怎么创建的么. 一天我问同事:你知 ...

  4. Vivado创建调用自定义IP上板验证

    Vivado创建调用自定义IP上板验证 本次记录如何使用Vivado创建调用自定义IP上板验证 自定义IP(Key_test) 按键消抖功能的模块 然后调用此(Key_test) IP 在顶层文件进行 ...

  5. MySQL存储过程_创建-调用

    存储过程:SQL中的"脚本" 创建存储过程 调用存储过程 存储过程体 语句块标签 存储过程的参数 in:向过程里传参 out:过程向外传参值 inout:in and out #S ...

  6. 创建调用查询删除存储过程语法

    创建存储过程 CREATE PROCEDURE procedure_name ([proc_parameter[,...]]) begin-- SQL语句 end ; 示例 : delimiter $ ...

  7. Windows PowerShell 2.0创建调用脚本文件

    在PowerShell中不存在文件和目录的概念,涉及文件和目录的操作总是转换为项(item)处理,即Get-Item.Get-ChildItem和Get-ItemProperty.在PowerShel ...

  8. 面向对象,类,属性,方法,创建调用属性方法,有参,无参,变量代码示例

    一,添加显示客户  1,修改客户信息类  package com.bdqn.day03.zuoyie;import java.util.Arrays; import java.util.Scanner ...

  9. day6 面向对象 类的定义访问 命名空间的声明 对象的定义创建 字段的定义创建访问 方法的创建调用

    day6 面向对象 面向过程是分析解决问题的步骤,然后把步骤实现 面向对象是把构成问题的事分解成各个对象,不是为了完成步骤,为了描述在整个 类是类别 是一种抽象的数据类型 是相同特征实体的抽象 类里共 ...

  10. matlab如何创建table,table,matlab,中table数据类型,创建,调用,访问

    MATLAB table数据结构 目录: ?关于作者 ?table简介 o为什么需要table数据结构 o通过导入数据构造table对象 o调用table构造函数来构造table对象 o通过转换函数构 ...

最新文章

  1. 一句话的设计模式(转)
  2. (015)java后台开发之web项目中如何添加jar包和删除jar包
  3. PAT甲级1120 Friend Numbers:[C++题解]set去重且有序
  4. 抛鸡蛋html5游戏,数学智力题:扔鸡蛋计算不会碎的楼层
  5. Python import其他文件夹的文件
  6. 音乐制作:用FL Studio做电子音乐
  7. 网站pv 和服务器数量,聊一聊PV和并发、以及计算web服务器的数量的方法
  8. ATITIT db perf enhs 数据库性能优化 目录 第一章 Cache类 1 第一节 查询cache 1 第二节 Update cache 2 第三节 内存表机制 零时表 2 第四节 雾
  9. 俄罗斯方块c语言代码及注释,俄罗斯方块C语言代码
  10. Blender建模与3D打印
  11. 3dmax联机分布式渲染方法技巧详解
  12. 基于java网上体育用品商城系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  13. python把英语句子成分字母_如何标注英语句子成分?
  14. 达索系统3DEXPERIENCE 平台应用程序组件
  15. 「Vue实战」武装你的前端项目
  16. 人脸识别签到考勤系统毕业设计,人脸识别考勤系统设计与实现,人脸识别系统论文毕设作品参考
  17. 多亏了这几款软件,我才能坚持写博客这么多年!
  18. 史上最全的Altium Designer 20安装教程
  19. McAfee全面数据丢失防护产品概述
  20. Oracle数据库基础

热门文章

  1. AT89S52单片机之定时器/计数器
  2. EasyCamera轻松集成Camera拍照
  3. 龙芯2f灵珑一体机debian6系统重装
  4. 数学分析教程(科大)——1.9笔记+习题
  5. 保持简单----纪念丹尼斯•里奇
  6. 2018年烽火通信c语言笔试题,2018-9-19 烽火通信C++面经
  7. YD5141SYZ后压缩式垃圾车的上装箱体设计
  8. Sniffer Pro
  9. sniffer4d灵嗅_Sniffer4D灵嗅在无人机环境监测中的应用
  10. winpe装双系统linux_如何安装linux,winpe下如何安装linux的ISO