HTML中调用带有SoapHeader头的WebService的两种方法
第一种:
function CallWebMethodWithHeader() {
var soapXML =
"<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>" +
" <soap:Header>" +
"<TestHeader xmlns='http://tempuri.org/'>" +
"<HeaderData xmlns='http://tempuri.org/'>111111111111</HeaderData>" +
"</TestHeader>" +
"</soap:Header>" +
"<soap:Body>" +
"<TestSoapHeader xmlns='http://tempuri.org/' />" +
"</soap:Body>" +
"</soap:Envelope>"; $.ajax({
url: "http://localhost:40800/WebService/SoadHeader.asmx?op=TestSoapHeader",
type: "POST",
dataType: "xml",
contentType: "text/xml; charset=utf-8",
data: soapXML,
beforeSend: function (xhr) {
xhr.setRequestHeader('SOAPAction', 'http://tempuri.org/TestSoapHeader'); }, success: function (data) {
console.log(data);
},
error: function (err) {
alert("webmethod call failed");
} }); } //调用
CallWebMethodWithHeader();
第二种:采用Jquery Soap插件
插件地址:https://github.com/doedje/jquery.soap
这个插件在添加SOAPHeader的时候有两个问题:1、生成提交的XML中缺少命名空间;2、DEMO中提示可以直接toJSON,实际测试有问题。
关于第一个问题,需要在插件源代码的soapHeader配置部分增加一行代码,相关代码如下:
// SOAPHeader
//soapObject.attr('xmlns', config.namespaceURL);
if (!!config.SOAPHeader) {
var soapHeader = SOAPTool.processData({
data: config.SOAPHeader,
name: 'temp',
prefix: ''
}); if (!!soapHeader) {
if (soapHeader.hasChildren()) {
for (var j in soapHeader.children) {
soapEnvelope.addHeader(soapHeader.children[j]);
//需要增加下面这行代码
soapHeader.children[j].attr('xmlns', config.namespaceURL);
}
} else {
soapEnvelope.addHeader(soapHeader);
}
}
}
客户端调用:
$.soap({
url: 'http://localhost:40800/WebService/SoadHeader.asmx?op=',
method: 'TestSoapHeader',
namespaceURL: 'http://tempuri.org/',
SOAPHeader: {
TestHeader:{ HeaderData: 'Basic'}
},
data:{
},
success: function (soapResponse) {
var x2js = new X2JS();
var jsonObj = x2js.xml_str2json(soapResponse);
console.log(jsonObj.Envelope.Body.TestSoapHeaderResponse);
// 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) {
//console.log(SOAPResponse);
}
});
HTML中调用带有SoapHeader头的WebService的两种方法的更多相关文章
- shell中调用R语言并传入参数的两种步骤
shell中调用R语言并传入参数的两种方法 第一种: Rscript myscript.R R脚本的输出 第二种: R CMD BATCH myscript.R # Check the output ...
- 转载]PhpCms V9调用指定栏目子栏目文章的两种方法
PhpCms V9调用指定栏目子栏目文章的两种方法 第一种.直接写子栏目id ,用cat in {pc:get sql="SELECT * from v9_news where status ...
- Java学习笔记——可视化Swing中JTable控件绑定SQL数据源的两种方法
在 MyEclipse 的可视化 Swing 中,有 JTable 控件. JTable 用来显示和编辑常规二维单元表. 那么,如何将 数据库SQL中的数据绑定至JTable中呢? 在这里,提供两种方 ...
- 怎么在CAD中测量图纸距离?来看看这两种方法
在CAD中设计图纸最重要的就是图纸的尺寸,俗话说也就是图纸间的距离.通过正确的数据设计出的图纸才能够准确,也能够避免施工时事不必要的误差.那怎么在CAD中测量图纸距离呢?具体要怎么来进行操作呢?下面我 ...
- PyQt(Python+Qt)学习随笔:QTableWidget中表格各列平均分配宽度的两种方法
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在QTableWidget表格部件中,如果需要实现表格中各列要占满部件中的可用空间,同时实现各列平分 ...
- java中调用本地动态链接库(*.DLL)的两种方式详解和not found library、打包成jar,war包dll无法加载等等问题解决办法
我们经常会遇到需要java调用c++的案例,这里就java调用DLL本地动态链接库两种方式,和加载过程中遇到的问题进行详细介绍 1.通过System.loadLibrary("dll名称,不 ...
- Android访问WebService的两种方法
首先解释一下WebService:WebService是一种基于SOAP协议的远程调用标准.通过WebService可以将不同操作系统平台,不同语言.不同技术整合到一起.详细见:http://baik ...
- asp.net远程调用WebService的两种方法(转载)
一,静态方法在“解决方案‘项目名’” -> 相应的文件夹,如“Web References” ->右键“添加WEB引用”->在URL里写入地址.二,动态方法在“解决方案‘项目名’” ...
- 通用的调用WebService的两种方法。(调用别人提供的wsdl)(转)
转载自:http://blog.sina.com.cn/s/blog_65933e020101incz.html1.调用WebService的Client端采用jax-ws调用WebService:流 ...
随机推荐
- English-培训1-Phonetic symbols
- Linux 非互联网环境安装依赖包
1 介绍 有的生产环境是没有网络的,我们部署rpm包的时候会出现缺少很多rpm包的依赖问题,都去网上下载实在太麻烦,今天介绍一个办法可以解决这一问题. 2 解决方案 找一台可以联网的机器,在上边下载相 ...
- 蓝桥杯 ALGO-156 表达式计算 JAVA代码 栈的应用
算法训练 表达式计算 时间限制:1.0s 内存限制:256.0MB 问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个 ...
- Apache查看连接数和限制当前的连接数
在wamp环境下查看apche连接数和限制当前的连接数 httpd_mpm.conf文件在你apache安装上当的\\conf\\extra中,还在就是在要apache httpd.conf中把#In ...
- PHP启动php-fpm成功,但php-cgi进程查找不到 502 getaway
一般情况大家刚把lnmp环境安装好之后,把nginx中 fastcgi_pass unix:/tmp/php-cgi.sock项修改成 fastcgi_pass 127.0.0.1:9000之后,网页 ...
- SpringBoot项目mysql配置文件密码加密(jasypt)
起因:因为我个人微博想要公开源码,但数据库配置文件会暴露在外面,又不想生产跟开发环境建来回切换,所以想到了加密数据库密码,于是问了群里的一个朋友小XX(原谅我不识字) 经过: 简单粗暴,直接上代码: ...
- VMWARE许可文件
VMware 14 Pro 永久许可证激活密钥FF31K-AHZD1-H8ETZ-8WWEZ-WUUVACV7T2-6WY5Q-48EWP-ZXY7X-QGUWD
- 50、[源码]-Spring容器创建-Bean创建完成
50.[源码]-Spring容器创建-Bean创建完成 11.finishBeanFactoryInitialization(beanFactory);初始化所有剩下的单实例bean: beanFac ...
- Kylin介绍 (很有用)
转:http://blog.csdn.net/yu616568/article/details/48103415 Kylin是ebay开发的一套OLAP系统,与Mondrian不同的是,它是一个MOL ...
- Java知识点汇总-1
目录 1 native方法 2 泛型 3 hashcode 4 JDK主要的包 5 被final修饰的类特点 6 空串与null串 7 判断字符串是否相等 1 native方法 JDK源代码由C++. ...