小程序访问SOAP服务端 (WebService)

这个东西没有很多文章来写,所以自己爬了坑来稍微写一下给小白做参考哈

因为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: 起始都要加,里面的参数不管有几个,都得加,参考我的格式就可以,具体为什么就不求甚解了
        //w3cschool中有做解释,点击打开链接这是w3cschool地址有兴趣可以去看看
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();
}
})
}




复制粘贴后把自填的部分都填上,删掉自填的字样哈,要填的地方都给你标出来了

阅读更多

没有更多推荐了,返回首页