Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >初探小程序(二)请求WebService

初探小程序(二)请求WebService

作者头像
安德玛
发布于 2022-03-08 09:58:04
发布于 2022-03-08 09:58:04
66100
代码可运行
举报
文章被收录于专栏:Cordova封装H5 APPCordova封装H5 APP
运行总次数:0
代码可运行

最近做小程序项目,由于项目比较古老,所以后台提供的接口是WebService的,这样在小程序的网络请求中,就需要进行一些处理,在各种查资料爬坑后(不得不说,百度太坑,前几个资料跟本不好用,不过可能也就是我这头不好用,但是!!!!我的这种方法,肯定适用各种情况的WebService请求情况,所以看我就足够啦,哈哈哈哈哈!!!!!)

话不多说,直接来干货

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//这是封装好的求情方法
/**
 * GET请求API
 * @param  {String}   url         接口地址
 * @param  {Object}   params      请求的参数
 * @param  {String}   SOAPAction  SOAP协议
 * @param  {String}   josnResout  XML对应标签
 * @param  {Function} successFun  接口调用成功返回的回调函数
 * @param  {Function} failFun     接口调用失败的回调函数
 */
function requestWebServerApi(url, params, SOAPAction, josnResout, successFunMa, failFun) {
  wx.request({
    url: url,
    method: 'POST',
    data: params,
    header: {
      'content-type': 'text/xml; charset=utf-8',
      'SOAPAction': SOAPAction
    },
    success: function (res) {
      var json = date.stringTurnXmlturnJson(res.data, josnResout);
      if (json.code != 1) {
        wx.showModal({
          title: '提示',
          content: '请求失败',
          showCancel: false,
          confirmColor: "#6C93E0",
          success: function (res) {
            if (res.confirm) { }
          }
        })
      }
      typeof successFunMa == "function" && successFunMa(json)

    },
    fail: function (res) {
      wx.showModal({
        title: '提示',
        content: '请求失败',
        showCancel: false,
        confirmColor: "#6C93E0",
        success: function (res) {
          if (res.confirm) { }
        }
      })
      typeof failFun == 'function' && failFun(res.data)
    }

  })
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// js文件中的调用
getSchoolCollectInfo: function() {

    wx.showLoading({
      title: '加载中',
    });
    var that = this;
    var method = 'GetSchoolCollectInfoBySchoolCode'; // 方法名
    var keyArr = ['strSchoolCode'];  //参数
    var valueArr = [that.data.schoolId]; //参数值
    var datacopy = date.settingDatacopy(method, keyArr, valueArr);
    var josnResout = 'GetSchoolCollectInfoBySchoolCodeResult'
    request.requestWebServerApi(app.wsdlurl, datacopy, app.targetNamespace + method, josnResout, function (json) {
      wx.hideLoading()
      that.setData({
        schoolName: json.result.SchoolName
      });
     
    }, function (res) { wx.hideLoading()});
  },

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//targetNamespace 是命名空间 datacopy是参数值,需要转成XML的格式
function settingDatacopy(n, keyArr, valueArr) {
  var datacopy = '<?xml version="1.0" encoding="utf-8"?>';
  datacopy += '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="' + app.targetNamespace + '">';
  datacopy += '<soapenv:Header/>';
  datacopy += '<soapenv:Body>';
  //接着拼你要访问的方法名、参数名和你传递的实参值,比如我要访问的方法是getReader(String arg0,int arg1)
  //而我的实际调用是getReader('libsys',2),所以拼字符串如下
  datacopy += '<ser:' + n + '>';
  for (var index in keyArr) {
    datacopy += '<ser:' + keyArr[index] + '>';
    datacopy += valueArr[index];
    datacopy += '</ser:' + keyArr[index] + '>';
  }
  datacopy += '</ser:' + n + '>';
  datacopy += '</soapenv:Body>';
  datacopy += '</soapenv:Envelope>';

  return datacopy;
}

这样就可以请求成功啦,但是大家可以看到我下面的方法,因为请求成功的是xml格式的数据,需要把xml数据转成json数据,方法如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
      var json = date.stringTurnXmlturnJson(res.data, josnResout);

下载这个库

成功后,提出部分文件,放在一个文件夹中,导入项目,如图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//XML  xml数据
//value  要取出xml数据中的标签
function stringTurnXmlturnJson(XML,value) {
  var Parser = require('../utils/dist/dom-parser.js');
  var XMLParser = new Parser.DOMParser();
  var doc = XMLParser.parseFromString(XML);
  var xmlStr = doc.getElementsByTagName(value)[0].firstChild.nodeValue;//
  var josn = JSON.parse(xmlStr);
  return josn;
}

搞定,就是这样的一套流程,如果有问题的话,欢迎打扰,互相学习

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微信小程序访问webService(wsdl)
我本次需要测试的webService请求恰恰是http的,没办法,只好先在微程序里设置不校验了
用户6493868
2022/03/08
1.6K0
微信小程序语音聊天智能对话(demo)
项目中用到了 olami sdk把录音或者文字转化为用户可以理解的json字符串。 效果图 重要jS代码: //手指按下时 语音转文字 voiceToChar:function(){ v
honey缘木鱼
2018/07/04
3.5K0
小程序的网络请求封装
我们前端开发就要有面向对象的思想,让自己写的程序更加简单明了,不要有太多的融于代码,所以这里提到了封装的思想。 之前的项目里每次调用网络请求都调用了类似的代码: //加载数据 requestData() { var that = this if (that.data.listData.length < 1) { wx.showToast({ title: '加载中', duration: 500 }) } else {
honey缘木鱼
2018/06/13
1.4K0
微信小程序网络请求封装示例
网络请求小程序提供了wx.request, 仔细看一下 api,这不就是n年前的 $.ajax 吗,好古老啊。
用户6493868
2022/03/08
1.9K0
微信小程序封装api接口
在utils新建个http.js文件,然后写入下列代码 export default function wxRequest(url, params, method = "GET") { retur
明知山
2020/09/03
1.7K0
微信小程序快速入门开发指南(三)
          url: app.globalData.uploadfileUrl,  //后台接收上传文件的接口
初九之潜龙勿用
2024/06/20
1530
小程序的页面生成图片分享朋友圈
1.网络图片要下载到本地,就是getimginfo和promise,具体技术细节我也不晓得。然后就是本地图片的地址和网络图片的地址不同。本地的要加../../images/+res[0].path,而网络的直接是res[0].path。本机调试看不出来,用真机调试比较容易发现问题。
hotqin888
2018/10/15
4.5K0
微信小程序+PHP实现登录注册(手把手教程)[通俗易懂]
这里需要注意的是:如果本机已安装了 MySQL,而安装 PhPstudy 时又安装了 PhPstudy 自带的 MySQL,这里如果想要连接 PHPstudy 安装时带的 MySQL,就需输入 PHPstudy 安装时带的 MySQL 的密码,参考链接:https://blog.csdn.net/weixin_46034990/article/details/104742459
全栈程序员站长
2022/09/30
2.7K1
微信小程序+PHP实现登录注册(手把手教程)[通俗易懂]
小程序如何获取code
小程序调用wx.login() 获取 临时登录凭证code ,并回传到开发者服务器
达达前端
2022/04/29
2.6K0
小程序如何获取code
WebService系列之HttpClient调用WebService接口
测试工具下载soapui测试 http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl package com.extra.credit.ut
SmileNicky
2021/03/17
4.8K0
WebService系列之HttpClient调用WebService接口
微信小程序之 wx.getUserInfo引导用户授权问题
 首先,在page外定义一个函数用户判断是否为空对象 var isEmptyObject = function (e) { var temp; for (temp in e) return !1; return !0 } 然后,在page中的onload里面调用授权 onLoad: function () { var that = this; if (app.globalData.userInfo) { this.setData({ userI
wfaceboss
2019/04/08
8810
小程序10行代码实现微信头像挂红旗,国庆节个性化微信头像
至于如何创建小程序,我这里就不在细讲了,我也有写过创建小程序的文章,也有路过相关的学习视频,去翻下我历史文章找找就行。
编程小石头
2019/09/26
3.3K6
小程序10行代码实现微信头像挂红旗,国庆节个性化微信头像
微信小程序与用户交互
显示Loading提示框,不会自动关闭,需主动调用 wx.hideLoading 才能关闭提示框
小小咸鱼YwY
2020/06/19
1.4K0
微信小程序发布新版本提示用户更新代码封装
代码已上传至github github代码地址:https://github.com/Miofly/mio.git
用户10106350
2022/10/28
3490
微信小程序快速入门开发指南(二)
微信小程序的程序语法格式类似json格式,服务器也要采用结果以json的形式返回给小程序,这种格式需要对特殊字符进行编码,如下举例一个json字符串。
初九之潜龙勿用
2024/06/20
1440
微信小程序快速入门开发指南(二)
微信小程序发布新版本时自动提示用户更新
官方文档:https://developers.weixin.qq.com/miniprogram/dev/api/base/update/UpdateManager.html
似水的流年
2021/03/15
1.9K0
微信小程序----界面交互反馈API(wx.showToast(OBJECT)、wx.showModal(OBJECT))(MUI消息框)
效果图 WXML <view class="tui-content"> <view class="tui-show-name"> <text class="tui-card-btn" bi
Rattenking
2021/02/01
1.1K0
微信小程序----界面交互反馈API(wx.showToast(OBJECT)、wx.showModal(OBJECT))(MUI消息框)
微信小程序 - 通用页面(登录、注册、找回密码)
点击登录时,动态设置data属性值,改变登录按钮文本,背景色,显示loading动画,不可点击
用户5997198
2019/09/02
19.2K1
微信小程序 - 通用页面(登录、注册、找回密码)
如何在微信小程序发布新版本后提示用户强制更新!
官方提供了 UpdateManager 更新管理器对象,用来检测是否有新的版本发布。
执行上下文
2022/07/26
4.9K0
如何在微信小程序发布新版本后提示用户强制更新!
解决微信小程序登录与发布的一些问题
要使用的是本地图片,不想把图片上传到网络再通过https的方式解决,解决方法如下:
达达前端
2022/04/29
6940
解决微信小程序登录与发布的一些问题
推荐阅读
相关推荐
微信小程序访问webService(wsdl)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档