Web Service学习笔记(4)
代理类文件:
在客户端使用程序中生成的Reference.cs的文件即代理类,Service1.wsdl为相应的XML文件
代理类说明:
1. 代理类开始是引出一系列的命名空间,代码的主题是定义一个跟待访问的Web服务类同名的 从System.Web.Services.Protocols.HttpGetClientProtocol派生的代理类
2. 代理类具有如下四个方法
2.1 不带参数的构造函数
构造函数主要是设定代理类的URL属性,这个属性表示WEB服务的URL.
2.2 doSearch方法
该方法是WEB服务的doSearch方法的本地代理版本,该方法被一个HttpMethodAttribute所标注,其目的是指示如何序列化发送到 WEB服务的doSearch方法的参数以及如何反序列化WEB服务的响应.如果采用HTTP-GET调用WEB服务的方法,则必须把 HTTPMothodAttribute的ReturnFormatter属性设置为 XmlReturnReader,ParameterFormatter属性设置为UrlParameterWriter.
方法的返回值也被一个XmlRootAttribute特性所标记.该特性用以将类,结构,枚举或结口标记为XML文档实例的根(或项级)元素.该特性的 ElementName属性表示返回值对应的XML元素的名称,Namespace属性表示XML根元素的命名空间,IsNullable属性表示返回值为空时ElementName所指的无素是否包xsi:nil属性.
以上特性其实代替了我在C#分类中所讲的利用HTTP-GGET;HTTP-POST来获得WEB服务中的设置URL,在URL中附中参数,以及从返回XML文档中提结果的大段代码
再来看看方法中的代码
return ((string)(this.Invoke("doSearch", (this.Url + "/doSearch"), new object[] { keyword})));
上述代码先调用一个Invoke方法,(该方法继承自父类HttpGetClientProtocol),然后把调用结果强制转化为字符串类型.
Invoke方法的原型:
protected Object Invoke(string MethodName,string RequestUrl,Object[] Parameters);
参数:MethodName->表示要调用的Web服务的名称,本例中的“doSearch“
参数:RequestUrl->表示WEB服务的方法的URL,它是由WEB服务的URL加上"/方法名"组成
参数:Parameters->是一个对象数组,包含要传递到远程WEB服务的参数,数组中的顺序与派生类的调用方法中的参数顺序对应
返回值包含派生类方法的返回值和所有引用或输出参数的对象数组
2.3 BegindoSearch方法
这个方法用以启动对WEB服务的doSearch方法的异步调用
BegindoSearch的参数:
keyword: 参数.
callback: AsyncCallback类型的委托对象,当异步调用结束后,callback所代表的函数将被回调,用来接收结果.
AsyncCallback委托原型:
[Serializable]
public delegate void AsyncCallback(IAsyncResult ar);
其: IAsyncResult接口:用于监视和管理异步操作.
IAsyncResult接口的原型
public interface IAsyncResult
{
ob
相关新闻>>
- 发表评论
-
- 最新评论 更多>>