1. 程式人生 > >小程式訪問SOAP服務端 (WebService)

小程式訪問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(); } }) }

複製粘貼後把自填的部分都填上,刪掉自填的字樣哈,要填的地方都給你標出來了