阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      插件 jQuery.Soap 中文API文档

      插件 jQuery.Soap 中文API文档 https://github.com/doedje/jquery.soap

      源码 & 下载

      • Github地址:address
      • 源码下载: -
      • 效果演示: -

      适用场景

      此脚本使用$ .ajax发送SOAP:Envelope。它可以将XML DOM,XML字符串或JSON作为输入,并且响应也可以作为XML DOM,XML字符串或JSON返回。

      插件特点

      jQuery Soap

      file: jquery.soap.js 
      version: 1.7.3
      

      用于使用SOAP与Web服务进行通信的jQuery插件。

      此脚本使用$ .ajax发送SOAPEnvelope。它可以将XML DOM,XML字符串或JSON作为输入,并且响应也可以作为XML DOM,XML字符串或JSON返回。

      给所有贡献$ .soap的人们带来了巨大的威力!

      Let’s $.soap()!

      注意:有关问题,错误,问题或以下任何其他问题,请参阅我的说明。我真的更喜欢你在github上使用问题跟踪器而不是发送邮件….

      基本用法

      $.soap({
      	url: 'http://my.server.com/soapservices/',
      	method: 'helloWorld',
      
      	data: {
      		name: 'Remy Blom',
      		msg: 'Hi!'
      	},
      
      	success: function (soapResponse) {
      		// do stuff with soapResponse
      		// if you want to have the response as JSON use soapResponse.toJSON();
      		// or soapResponse.toString() to get XML string
      		// or soapResponse.toXML() to get XML DOM
      	},
      	error: function (SOAPResponse) {
      		// show error
      	}
      });
      

      会导致

      $.soap({
      	url: 'http://my.server.com/soapservices/',
      	method: 'helloWorld',
      
      	data: {
      		name: 'Remy Blom',
      		msg: 'Hi!'
      	},
      
      	success: function (soapResponse) {
      		// do stuff with soapResponse
      		// if you want to have the response as JSON use soapResponse.toJSON();
      		// or soapResponse.toString() to get XML string
      		// or soapResponse.toXML() to get XML DOM
      	},
      	error: function (SOAPResponse) {
      		// show error
      	}
      });
      

      这将发送到:url +方法 http://my.server.com/soapservices/helloWorld

      依赖

      jQuery - 任何版本1.9或更高版本都可以正常工作,可以回到v1​​.6

      该函数 SOAPResponse.toJSON() 取决于任何第三方jQuery.xml2json插件

      以前bower.json提到了由XTREEM发布的fyneworks中的一个作为依赖项但由于它将jquery 1.11作为依赖项而被删除,因此不能用于jquery 的1.9,1.10或2.x版本。

      从版本1.6.7开始,当您希望使用该SOAPResponse.toJSON函数时,必须手动安装任何第三方jQuery.xml2json插件,如下面的列表中所示:

      • sparkbuzz / jQuery-xml2json
      • fyneworks

      请记住,更改正在使用的插件可能会破坏已经使用的现有代码,SOAPResonse.toJSON因为所有插件都会创建具有不同结构的对象!

      Promise

      从版本1.3.0开始,$.soap()返回实现Promise接口的jqXHR对象。这允许您使用.done().fail().always()等于是代替使用successerror选项,你也可以这样做:

      $.soap({
      	...
      }).done(function(data, textStatus, jqXHR) {
      	// do stuff on success here...
      }).fail(function(jqXHR, textStatus, errorThrown) {
      	// do stuff on error here...
      })
      

      优点是这些promise回调可以让你直接访问$.ajax而不是$.soap的SOAPResponse对象提供的原始参数。

      globalConfig

      从版本0.9.3开始,可以调用$ .soap来设置额外的配置值。当您对$.soap进行大量调用并且厌倦了为url,namespace和error重复相同的值时,这种新方法可以派上用场:

      $.soap({
      	url: 'http://my.server.com/soapservices/',
      	namespaceQualifier: 'myns',
      	namespaceURL: 'urn://service.my.server.com',
      	error: function (soapResponse) {
      		// show error
      	}
      });
      
      $.soap({
      	method: 'helloWorld',
      	data: {
      		name: 'Remy Blom',
      		msg: 'Hi!'
      	},
      	success: function (soapResponse) {
      		// do stuff with soapResponse
      	}
      });
      

      上面的代码与第一个示例完全相同,但是当您想要对同一个soapserver进行另一次调用时,您只需要指定更改的值:

      $.soap({
      	method: 'doSomethingElse',
      	data: {...},
      	success: function (soapResponse) {
      		// do stuff with soapResponse
      	}
      });
      

      但它不会阻止你调用一个完全不同的soapserver与不同的错误处理程序,例如:

      $.soap({
      	url: 'http://another.server.com/anotherService'
      	method: 'helloWorld',
      	data: {
      		name: 'Remy Blom',
      		msg: 'Hi!'
      	},
      	success: function (soapResponse) {
      		// do stuff with soapResponse
      	},
      	error: function (soapResponse) {
      		alert('that other server might be down...')
      	}
      });
      

      注意:data参数用作密钥。如果在传递给$ .soap的选项中没有指定数据,则所有选项都存储在globalConfig中,将不会创建SOAPEnvelope,也不会发送任何内容。当指定方法时,将使用globalConfig,并且传递给$ .soap的所有选项都将覆盖globalConfig中的那些选项,但请记住,它们不会被覆盖!

      WS-Security的

      从版本1.1.0开始,jQuery.soap支持一种非常基本的WSS形式。请求此功能(问题#9)并且相当容易实现,但我没有办法正确测试它。所以如果你遇到问题,请告诉我(见下文)

      $.soap({
      	// other parameters..
      
      	// WS-Security
      	wss: {
      		username: 'user',
      		password: 'pass',
      		nonce: 'w08370jf7340qephufqp3r4',
      		created: new Date().getTime()
      	}
      });
      

      HTTP基本授权

      使用HTTPHeaders选项,实现HTTP基本授权相对简单,如下所示:

      var username = 'foo';
      var password = 'bar';
      
      $.soap({
      	// other parameters...
      
      	HTTPHeaders: {
      		Authorization: 'Basic ' + btoa(username + ':' + password)
      	}
      });
      

      同源政策

      由于同源策略,您将无法在 http://www.example.com 上有一个页面执行ajax调用($.soap在内部使用$.ajax)到 http://www.anotherdomain.com

      要解决此问题,您应该在 http://www.example.com上使用某种代理或使用CORS。

      请注意,它也不允许从 http://www.example.com 转到 http://soap.example.com 甚至是 http://www.example.com:8080

      基本上,当您无法使用相对URL调用webService时,您将不得不采取措施绕过相同的源策略,以下是一些帮助您的链接:

      http://stackoverflow.com/questions/3076414/ways-to-circumvent-the-same-origin-policy

      如果您可以完全控制从html服务的apache或nginx服务器,则设置代理的最简单方法是使用其反向代理功能:

      • Setting up a reverse proxy in apache

      • Setting up a reverse proxy in nginx

      当你因为在之前的链接中使用lmgtfy.com而感到不安时,我深表歉意,我只是喜欢那个网站!;)

      源码解析

      参考引用

      目录
      目录