|
首页>编程技术>xml技术> |
关于webservices和SOAP |
|
Visited times , Welcome to Data Mining Forum & Data Mining Expert |
|
|
关于webservices和SOAP 看到以下代码 //构建方法 var method = new SOAP.Method(null,new WS.QName("login",NAMESPACE_FRAMEWORKS)); var params = new Array({value:uvalue,type:TYPE.STRING},{value:pvalue,type:TYPE.STRING}); method.addMethodParams(params); //调用webservices进行验证 var call = new WS.Call(window.baseUrl+'/services/login'); 不知道该看些什么资料学习下?刚搜索了相关文章,好象没有介绍以上代码写法的.工程有个WS.JS文件,定义了好多对象.请问大家有什么资料可以学WS.JS文件里的东西吗?最好有例子的那种.谢谢大家是啊,大家谁会的说说,提供点资料吧,我也正需要呢,大家帮帮忙!1、先下载个prototype.js学习一下,结合JSON的知识,这样ws.js里面的一些写法就知道是怎么回事了; 2、new WS.QName("login",NAMESPACE_FRAMEWORKS)创建了一个Web服务限定名对象,NAMESPACE_FRAMEWORKS是前面定义好的命名空间,比如:http://www.xxx.com/framework,login是一个Web Service的名字。 3、new SOAP.Method(null,qname)以默认的Soap信封创建了一个Soap消息的方法,SOAP.Method、SOAP.Envelope在ws.js中都有定义。 4、params定义了传递给method方法的参数,在ws.js中的SOAP Method节中有addMethodParams方法的定义。经过2、3、4步骤就产生了类似下面的XML(参数没有加上去,自己调试时可以看一下): <Envelope xmlns="http://www.w3.org/2003/05/soap-envelope"> <Body> <login xmlns="http://www.xxx.com/framework"> </login> </Body> </Envelope> 5、new WS.Call()创建了一个调用对象,这个对象以window.baseUrl+'/services/login'初始化,实际上是对应Web应用服务器上的一个名为login的Servlet,如果window.baseUrl也为http://www.xxx.com/framework,那么这个Servlet通过http://www.xxx.com/framework/services/login访问,包含了处理登录的业务逻辑。但此时还没有调用。 6、代码下面还应该有call.invoke(method.envelope,callback);这句才是将上面产生的XML Soap消息发送给Web服务器上的login Servlet进行处理,封装了含有Ajax特性的调用方法,其中callback是回调函数用来处理服务器返回的数据(返回的数据可以在Servlet中自定义),用来向客户显示处理结果等。形式如下: function callback(call,envelope){ var element = envelope.asElement(); alert(element.selectSingleNode(".//svl").text); } 说的不是很细,希望对大家有帮忙:)首先先谢谢楼上的.但我现在不知道WS.JS该怎么学?难道没有资料介绍WS.JS里的东西吗?那里面的东西好多.但我不知道WS.JS这是什么技术里的?IT专家网上有篇文章讲了一些这方面的东东,地址:http://webservices.ctocio.com.cn/tips/478/6300478.shtml 特别详细的资料说实话我也没见到过,我是用debug进去一行行看出来的,肯定有理解的不对的地方。有什么问题可以在这个帖子里交流,也期待有人能把这方面的详细资料共享出来!刚才有事没多说。ws.js里面的东西是挺多的,而且不仅仅是这一个js文件,可能还有prototype.js等其他的几个文件,依不同的项目可能ws.js里面的东西还有不同。大体的思路是在客户端用Javascript封装Web Service所涉及的一些对象,构造XML形式的SOAP消息通过XMLHttpRequest对象以异步(也可以同步)方式发送给Web服务器处理,Web服务器端会有相应的Servlet来解析并处理这种请求。 数据挖掘实验室 ws.js里面有不清楚的地方可以帖出来一起探讨!> 但我不知道WS.JS这是什么技术里的? 就是用js拼装一个ws的信息,然后通过xmlhttp发送。首先你要了解ws——web service。ws.js其实没什么。哇塞呀,程序的流程确实和冰块说的一样.但是,就像你说的一样.构造XML形式的SOAP消息是怎么弄的,你有什么资料吗? 还有就是JAVASCRIPT形式的Web Service有什么资料吗?这些是我比较头疼的地方.以这种技术开发我会,但不太明白其中的内核技术,想搞明白点.这样就可以任我修改了.呵呵,我有的资料也就是上面给出的网址了,我也想得到这方面比较权威的资料呢!我到是想写一点这方面的东西,但是一是自己没有时间,二是不知道写出来的对不对,三是文笔太差,所以就没写。我觉得最好的方式就是楼主有什么不清楚的就提出来,咱们一起探讨,探讨不明白的还有CSDN的大牛呢:)非要一份深入完整的资料,俺也在等待啊,哈哈!我这用到的这种技术还涉及很大一部分Web服务器上Java写的程序,所以我觉得干脆就用这个帖子当媒介,在这里学习这方面的技术好了!楼主哪里不清楚就帖出来,相信这里的朋友会知无不言的:)好!1是:怎么样在javascript里够建SOAP消息,用java类怎么解析!让我先练练手!高手们然后服务器那边怎么构造SOAP消息?返回到客户端时,javascript怎么解析服务器返回来的SOAP消息?这些比较精髓.请会的朋友们赐教.不胜感激.最好能有一个小例子.那简直就完美了!有关SOAP消息包括哪些请楼主自己找些资料参考,这里说下客户端如何用JS构造SOAP消息。 数据挖掘工具 就以楼主说的登录为例吧,在登录页面会有如下的INPUT控件: - HTML code
<input type="text" id="username">
<input type="password" id="password">
数据挖掘研究院 当用户点击“登录”按钮时会执行如下的代码: - JScript code
function userLogin(){
//用户名:zhangsan
var username = $("username").value.trim();
//密码:zs
var password = $("password").value.trim();
/*
客户端验证
*/
//构建方法
var method = new SOAP.Method(null,new WS.QName("login",NAMESPACE_FRAMEWORKS));
var params = new Array({value:username,type:TYPE.STRING},{value:password,type:TYPE.STRING});
method.addMethodParams(params);
//调用webservices进行验证
var call = new WS.Call(window.baseUrl+"/services/login");
call.asynchronous = false;//同步发送
call.invoke(method.envelope,callback);
function callback(call,envelope){
var element = envelope.asElement();
if(element != null){
//other codes
}
}
}
数据挖掘工具 1、new WS.QName("login",NAMESPACE_FRAMEWORKS)创建了一个Web服务限定名对象,NAMESPACE_FRAMEWORKS是前面定义好的命名空间字符串,比如:http://www.xxx.com/framework,可以把它当成常量。login是一个Web Service的名字或对应服务器上的一个Servlet,这个后面再说。 WS.QName在ws.js中可以找到以 - JScript code
WS.QName = Class.create();
数据挖掘实验室 开始的一段代码,从字面意义看就是创建一个对象并初始化(有关这种代码的写法及含义可以从网上找些prototype.js的学习资料看看)。 2、new SOAP.Method()以默认的Soap信封创建了一个Soap消息。SOAP.Method在ws.js中可以找到以 - JScript code
SOAP.Method = Class.create();
数据挖掘研究院 开始的一段代码,- JScript code
SOAP.Method.prototype = (new SOAP.Element()).extend({...});
表示Method从Element扩展(继承)并定义了envelope,inparams,outparams,decorator,hasType等几个新的属性和initialize,createSelect,addMethodParams等一些方法。而SOAP.Element则定义了ownerDocument属性,initialize、asElement、qname、setAttribute等方法。 如果楼主用过java C#等面向对象的语言,这里就可以看成是用Javascript实现的OO。 在Method的initialize方法中是用参数doc和qname初始化的这个对象,由于doc传入的是null所以执行 - JScript code
this.envelope = new SOAP.Envelope();
doc = this.envelope.ownerDocument;
body = this.envelope.createBody();
数据挖掘工具 这段代码,创建了SOAP信封对象并得到根节点,然后调用信封对象的createBody创建SOAP的Body部分。后面的代码用doc和qname创建了一个XML元素,调用父类(Element)的initialize_internal方法,把自己作为子节点加到SOAP的Body上。 通过这些代码就产生了包含如下内容的method对象: - XML code
<Envelope xmlns="http://www.w3.org/2003/05/soap-envelope">
<Body>
<login xmlns="http://www.xxx.com/framework">
</login>
</Body>
</Envelope>
数据挖掘工具 3、接下来创建了一个参数数组params,含有两个元素,每个元素都是一个对象,包含两个属性:value和type。一个对象代表用户名,另一个代表密码。TYPE.STRING在ws.js里面也有定义。 4、调用method的addMethodParams方法给method对象添加参数,执行后mehtod对象的内容如下: - XML code
<Envelope xmlns="http://www.w3.org/2003/05/soap-envelope">
<Body>
<login xmlns="http://www.zktr.com/jc/yhwh" type="params">
<vls xmlns="">
<vl type="string">zhangsan</vl>
<vl type="string">zs</vl>
</vls>
</login>
</Body>
</Envelope>
数据挖掘交友 5、创建一个WS.Call对象,这个对象的invoke方法将上面过程构造的SOAP消息发送给URL:window.baseUrl+'/services/login'进行处理,所以这里的login可以是WS或Servlet。发送的方式可以是同步的也可以是异步的,通过其asynchronous属性设置。callback是自定义的回调函数,可以处理服务器返回的消息。 时间关系java中如何解析下次再写,不知道这样说是不是清楚?我觉得这个里面的东西最好的学习方式就是以调试方式追踪进去一行行的执行,一边执行一边看都发生了什么变化,这样比较好理解。举例子来说肯定有说不到的地方,后台解析的部分更是如此。下次再写,困了:) 谢谢冰块!你写的我都懂了.谢谢,对我帮助挺大的!Create By Any-Extract(WL-AE) 数据挖掘工具
|
|
|
|
|
[数据挖掘专家]
[数据挖掘研究院]
[数据挖掘论坛]
[数据挖掘实验室]
|
上一篇:如何利用xml数据存储策略实现留言版
下一篇:如何使device
|
|
|
|