这个东西没有很多文章来写,所以自己爬了坑来稍微写一下给小白做参考哈
因为SOAP服务端的特殊,普通的post请求和普通的get请求无法请求,因为不是我写的服务端是不是有别的实现方法不清楚
但是也有比较麻烦的方案是用php或者java另外写一个转接访问
现在来说一下小程序直接访问的方案
connectToSoap:
function () {
this.showLoading();
var that =
this;
var method =
'...';
<<<<<<<自填 接口中方法名
var wsdlurl =
'http://..../webservice.asmx';
<<<<<<<自填 想要访问的接口url地址
var tmpNamespace =
'http://....../';
<<<<<<<自填 命名空间,可以用网页端直接访问你要请求的soap接口应该能看到
//以下为请求头的主体
var
tmpData=
'<?xml version="1.0" encoding="utf-8"?>';
tmpData+=
'<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://....../">'
;
<<<<<<<自填tmpNamespace 的值填到这里
tmpData+=
'<soapenv:Header/>';
tmpData+=
'<soapenv:Body>';
//
此处在Cabbage前加了ser: 起始都要加,里面的参数不管有几个,都得加,参考我的格式就可以,具体为什么就不求甚解了
,
tmpData+=
'<ser:Cabbage>'
;
<<<<<<<自填 这里的Cabbage就是上面method所填的域名位置:不是整条域名
tmpData+=
'<ser:short>111</ser:short>';
<<<<<<<自填 这里的short就是Cabbage域名访问所需要传的参数
tmpData+=
'<ser:toght>111
</ser:toght>';
<<<<<<<自填 这里的toght就是Cabbage域名访问所需要传的参数
tmpData+=
'</ser:Cabbage>';
<<<<<<<自填 对应上面的Cabbage
tmpData+=
'</soapenv:Body>';
tmpData+=
'</soapenv:Envelope>';
wx.request({
url: wsdlurl,
data:
tmpData,
method:
'POST',
// OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type':
'text/xml; charset=utf-8',
'SOAPAction': tmpNamespace + method,
<<<<<<<自填 就是把前面的接口拼接起来 前面填了就不用管了按照我这么来就行了
},
// 设置请求的 header
success:
function (res) {
// success 打印结果
console.log(res)
},
fail:
function () {
// fail
},
complete:
function () {
that.cancelLoading();
}
})
}
复制粘贴后把自填的部分都填上,删掉自填的字样哈,要填的地方都给你标出来了