其实web service这个名词很早就听说过了,但是一直都不知道怎么用,今天请教了下同事,然后了解了web service的基本调用过程。下面就把今天学的分享给大家。
首先,我们写一个最简单的web服务:helloworld。asmx 。该服务只有一个方法。
代码如下:
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
/**/ /// <summary>
/// helloworld 的摘要说明
/// </summary>
[WebService(Namespace = " http://tempuri.org/ " )]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class helloworld : System.Web.Services.WebService ... {
public helloworld () ...{
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public string HelloWorld(string guest) ...{
return guest + "welcome to my home!";
}
}
该方法用来返回一个字符串。(注意方法的参数:guest)
然后在web config中的system.web标签下加上下面的配置信息:
< protocols >
< add name = " HttpGet " />
< add name = " HttpPost " />
</ protocols >
</ webServices >
OK,前期工作就做好拉,接下来就是调用这个服务的方法拉。
首先,先建一个HTML页面:testwebservice.htm。
代码如下:
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head >
< title > 无标题页 </ title >
</ head >
< body >
< form id ="form1" method ="post" target ="xmlfile" action ="http://localhost:1532/testwebservice/helloworld.asmx/HelloWorld" >
< div >
< input type ="text" name ="guest" />
< input type ="submit" value ="submit" />
< input type ="button" value ="getxml" onclick ="getxmlmsg()" />
</ div >
</ form >
< iframe id ="xmlfile" name ="xmlfile" style ="width:0px; height:0px" ></ iframe >
< script > ...
function getxmlmsg()
...{
alert(xmlfile.document.body.innerText);
}
</ script >
</ body >
</ html >
这里我们用的调用web服务的方法是post方法,注意body标签下的form标签。method属性设置为post,action设置为服务的URL,注意该URL:/testwebservice/helloworld.asmx/HelloWorld。helloworld.asmx是服务的名称,HelloWorld是服务中的方法的名称。格式一定要这么写。如果是用GET方法的话,可以写为/testwebservice/helloworld.asmx/HelloWorld?name=value。把方法需要的参数写在URL中传过去。
另外,在form标签中还有个target属性设置为了iframe标签的id值,这样就把web服务返回的值写进了iframe中。
最要注意的地方来了,就是form里的第一个input 文本框,要设置其name属性为web服务中的方法的参数一样。
这个例子中web服务的方法的参数是guest,所以input文本框的name属性也得设置为guest。否则用post方法访问web服务会拒绝访问。
然后写了一个submit按钮,用来提交form表单。
然后写了一个botton按钮,用来获取web服务返回的结果,该结果是一个XML文档。web服务对数据的处理都是用XML来处理的。
还有就是把iframe的width和height属性都设为了0,是为了不让别人看到web服务返回的XML文件。以便对web服务返回的XML文件再进行更进一步的处理。这里我没有对XML文件进行更进一步的处理(^_^我也不太会操作XML文件,还再学习中,所以。。。)。
我觉得这篇文章对于想了解web服务而又不知道从何下手的人会有很大的帮助哈,至少我感觉突然明白了许多(肤浅的东西),算是个入门把。
看过觉得好的就顶一个哈。。谢谢咯。