微信小程序连接webservice(soap)

微信小程序连接webservice(soap)

​ 在微信小程序中,调用接口通常使用wx.request。而通过wx.request通常不能直接调用基于soap协议的webservice。

首先我们得知道 wx.request其中的两个属性"method"和"Data"

   wx.request({
      url: ,
      data: ,
      method: , // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT 
      header: {
        
      },
    }) 

“method"是指定请求的方法,通常使用"GET"和"POST”

"data"是用于发送指定的数据到服务器,在不同的方法中扮演着不同的角色。在"GET"方法中,"data"中的数据会转化为字符串拼接到url后面,如

   wx.request({
      url: http://你的服务器地址,    //最终的url为http://你的服务器地址?name=张三&age=19
      data:{
       name:张三,
       age:19
   } ,
      method: , // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT 
      header: {
        
      },
    }) 

在"POST"方法中,"data"中数据就会变成请求体发送到服务器,并根据 “Content-Type”字段决定发送的格式是json还是xml

而又wx.request默认的请求格式是json,soap的消息格式是基于xml的,所以不能直接发送soap请求

完整如下代码:

//method中设置你想调用的方法名
  var method = '...';
  //wsdlurl中设置需要访问的webservice的url地址
  var wsdlurl = '...';
  var targetNamespace = '...';         //在wsdl文件可以找到
  //datacopy中拼字符串,即http传输中的soap信息
  var datacopy = '<?xml version="1.0" encoding="utf-8"?>';
  datacopy += '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser=targetNamespace>';
  datacopy += '<soapenv:Header/>';
  datacopy += '<soapenv:Body>';
  //接着拼你要访问的方法名、参数名和你传递的实参值,比如我要访问的方法是function(String arg0)
  //而我的实际调用是function(2),所以拼字符串如下
  datacopy += '<ser:...>';  //填写方法名
  datacopy += '<arg0>'+...+'</arg0>';   //参数必须一致
  datacopy += '</ser:...>';//填写方法名
  datacopy += '</soapenv:Body>';
  datacopy += '</soapenv:Envelope>';
  
  

    wx.request({
      url: wsdlurl,
      data: datacopy,
      method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT 
      header: {
        'content-type': 'text/xml;charset=utf-8',  //告诉服务器请求体是采用utf-8编码的xml文本
        'SOAPAction': targetNamespace + method,    //告诉服务器此请求旨在调用特定的web服务操作,通常与content-type一起使用
      },
      
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值