WindowsForm应用程序调用WebService
本文原创,如需转载,请标明源地址,谢谢合作!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")] 为必须。
- 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;
- }
- }
- }

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的事件处理
- 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();
- }
- }
- }

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
WindowsForm应用程序调用WebService的更多相关文章
- C# - VS2019 WinFrm应用程序调用WebService服务
WinFrm应用程序调用WebService服务 关于WebService的创建.发布与部署等相关操作不再赘述,传送门如下:C# VS2019 WebService创建与发布,并部署到Windows ...
- CSDN上下载的一些关于Android程序调用Webservice执行不成功的问题
今天从书上和CSDN上找了几个关于android调用webservice的样例,这些样例从代码来看.没不论什么错误,可是就是执行不成功.分析了android调用web接口的写法,发现这些样例在调用的时 ...
- 应用程序 调用 webservice
首先用VS创建一个WebService服务工程,并且完成基本功能,本人完成的是html转pdf功能. 然后,新建一个Windows应用程序. 添加WebService到Windows项目中,如图 然后 ...
- 发布WebService到IIS和调用WebService
一:在项目上右键单击,选择发布,如图 二:可以单击重命名,自定义网站的名字,发布方式为:文件系统,目标路径为要发布的文件的位置,它需要放到IIS的目录下面的 三:打开IIS管理器,右键单击网站,添加网 ...
- winform客户端程序第一次调用webservice方法很慢的解决方法
.net2.0的winform客户端最常用的与服务端通信方式是通过webservice,最近在用dottrace对客户端做性能测试的时候发现,客户端程序启动以后,第一次调用某一个webservice的 ...
- 03server平台delphi程序不支持直接调用webservice
经过多次测试和查证,发现03server平台用delphi7.0开发的应用程序就是不支持直接调用webservice,无论这个webservice是delphi开发的还是C#开发,抑或是java开发的 ...
- C++程序中调用WebService的实现
前言 因为最近的项目中需要运用到在MFC程序中调用WebService里面集成好了的函数,所以特意花了一天的时间来研究WebService的构建以及如何在MFC的程序中添加Web引用,进而来实现在C+ ...
- java接口调用——webservice就是一个RPC而已
很多新手一听到接口就蒙逼,不知道接口是什么!其实接口就是RPC,通过远程访问别的程序提供的方法,然后获得该方法执行的接口,而不需要在本地执行该方法.就是本地方法调用的升级版而已,我明天会上一篇如何通过 ...
- Android调用WebService
这两天给老师做地铁app的demo,与后台的交互要用WebService,还挺麻烦的.所以想写点,希望有用. Web Services(Web服务)是一个用于支持网络间不同机器互操作的软件系统,它是一 ...
随机推荐
- php部分---人员表和民族表的显示、修改、删除
1.连接数据库 进行网页的显示 <table width="100%" border="1" cellpadding="0" cell ...
- hdu1078 记忆化搜索(DP+DFS)
题意:一张n*n的格子表格,每个格子里有个数,每次能够水平或竖直走k个格子,允许上下左右走,每次走的格子上的数必须比上一个走的格子的数大,问最大的路径和. 我一开始的思路是,或许是普通的最大路径和,只 ...
- click 绑定(三)防止事件冒泡
防止事件冒泡 默认情况下,Knockout允许click事件继续在更高一层的事件句柄上冒泡执行.例如,如果你的元素和父元素都绑定了click事件,那当你点击该元素的时候两个事件都会触发的.如果需要, ...
- java的nio之:java的nio系列教程之FileChannel
一:Java NIO的FileChannel===>Java NIO中的FileChannel是一个连接到文件的通道.可以通过文件通道读写文件. ===>FileChannel无法设置为非 ...
- 释放Linux系统预留的硬盘空间【转】
http://www.cnblogs.com/ggjucheng/archive/2012/10/07/2714294.html 前言 大多数文件系统都会保留一部分空间留作紧急情况时用(比如硬盘空间满 ...
- Too many authentic authentication failures for root
连接SSH服务器时报 Too many authentic authentication failures for root. 方法一:删除目标服务器 /root/.ssh/目录下的 known_ho ...
- Java OOM
深入浅出JProfiler https://yq.aliyun.com/articles/276 如何排查Java内存泄露(内附各种排查工具介绍) https://yq.aliyun.com/arti ...
- vim配置及插件安装管理(超级详细)[转]
1 写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用 ...
- 开源app之MyHearts
前言 这个月,说实话,有忙有闲,经历了一次病痛的洗礼,才认识到了只有好好的生活,认真的对待自己的身体,才能更好的去工作,没有了身体的支撑,什么工作都只能是纸老虎,不攻自破.在这里也祝愿大家,在生活中好 ...
- Python列表操作——模拟实现栈和队列
1.实现栈: stack=[] def pushit(): stack.append(raw_input('Enter New String:').strip()) def popit(): if l ...