分享

用COM也可以实现SOAP

 bluebirdzx 2005-07-13

其实我想过,不用COM也可以实现SOAP的。
假设服务器已经有WEBSERVICE,
那么只要我们在客户端用脚本(JScript)解析WDSL,然后分配对象,就可以模拟SOAPCLIENT了。
例如我期望的写发是:
try{
var ws=new WebClass("http:///webservice.aspx?WDSL");
}catch(x){
...failed...
return;
}

try{
ws.WebMothed1("str1","str2");
}catch(x){
...failed...
return;
}

我的具体想法是:
function WebClass(urlWDSL)
{
 ..获取WDSL的信息
 if(WDSL中不支持SOAP)
  //没有办法啦。。难道每调用一次都要提交一个FORM?
  throw(new Error(-1,"不支持SOAP"));
 ..处理WEBMETHOD的信息生成webmethods
 例如现在有[WebMothod]string MD5(string strInput)
 那么就:
 for(var i=0;i<webmethods.length;i++)
 {
  var curwm=this[webmethods[i].name]=function()
  {
   var fs=function(fs)
   {
    return fs.caller;
   }
   var fs=fs(fs);
   return fs.Invoke(this,fs,fs.webmethoddata,fs.arguments);
  }
  curwm.webmethoddata=webmethods[i]
  curwm.Invoke=function(ws,wm,wmdata,args)
  {
   根据wmdata提供的信息,检查args和进行可行的转换
   遇到不可以转换的,就开始发送:
   xmlhttp.Open("POST",wmdata.urlSoap,false)//同步
   xmlhttp.setRequestHeader....
   xmlhttp.Send...
   然后把结果进行处理。
   如果是有效的结果,返回结果(转换)。
   如果不是有效的,抛出异常
  }
 }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多