微信小程序访问webService(wsdl)

微信的wx.request当前只支持对https的请求,所以请注意你的url

我本次需要测试的webService请求恰恰是http的,没办法,只好先在微程序里设置不校验了


图中最后一个勾选上,就可以在微信开发者工具中先测试了。但是真正在手机上查看的时候貌似还是不行的!

微信小程序访问webService(wsdl)_第1张图片

想要访问webService,最好先明白webService的一些相关概念,如soap、wsdl,因为你访问的时候真的无法绕开这些东西。

之前分享的一篇文章里有相关概念的介绍,不了解的朋友可以看看webService的相关概念 


因为webService访问的是wsdl页面,使用的是SOAP协议,所以我们访问时采用XMLHTTP发送我们的请求。我的代码如下

Page({
  data:{
    userInfo:{}
  },
 formHandle:function(e){  
//method中设置你想调用的方法名
     var method='getReader';
//wsdlurl中设置需要访问的webservice的url地址
var wsdlurl='http://58.*.*.*:8081/HWWebService/LibServicePort?wsdl';
var targetNamespace='http://service.ws.*.com/';
//datacopy中拼字符串,即http传输中的soap信息
var datacopy= '';
datacopy += '';
datacopy += '';
datacopy += '';
//接着拼你要访问的方法名、参数名和你传递的实参值,比如我要访问的方法是getReader(String arg0,int arg1)
//而我的实际调用是getReader('libsys',2),所以拼字符串如下
datacopy += '';
             datacopy += 'libsys';
             datacopy += '2';
             datacopy += '
';
             datacopy += '
';
             datacopy += '
';
    wx.request({ 
         url: wsdlurl,
         data: datacopy, 
         method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT 
         header: { 
         'content-type':'text/xml; charset=utf-8',
         'SOAPAction':targetNamespace+method,
         }, 
         // 设置请求的 header
         success: function(res){
         // success
         var resData = res.data; 
         console.log(resData);
         },
         fail: function() {
         // fail
         }, 
         complete: function() { 
         // complete 
         }
     })
     }, 
     })


打印出来resdata可以看到,这就是从服务器端返回的数据,如果想深入解析xml数据获取对应的文本信息可以参照如下方式:
     var xmlDoc = func.parseXML(resData);
     var eamil = xmlDoc.getElementsByTagName("email")[0].firstChild.nodeValue;
代码调试过程中也遇到过诸多问题,可以下载软件SoapUI做一下测试,看看你的wsdl是否能够成功访问。
如果SoapUI没问题,而程序不行,可以用浏览器的开发者工具看一下你发送的http请求中包含哪些信息,和SoapUI中的信息进行对比或许就能发现问题了






你可能感兴趣的:(webService)