微信小程序外部API调用方法,遇到的一个小问题

简介: 最近对微信小程序比较感兴趣,想写一个查询车辆违章记录的小程序。在调用外部接口时需要,appcode 这种authoriztion。发现微信小程序的ajax请求使用这种方式不起作用。改为直接在header中赋值生效了,不知道什么原因,希望遇到同样问题的伙伴可以不用弯路。

最近对微信小程序比较感兴趣,想写一个查询车辆违章记录的小程序。在调用外部接口时需要,appcode 这种authoriztion。发现微信小程序的

ajax请求使用这种方式不起作用。改为直接在header中赋值生效了,不知道什么原因,希望遇到同样问题的伙伴可以不用弯路。

 beforeSend: function (xhr){
        console.log('授权码');
        xhr.setRequestHeader("Authorization", "APPCODE "+"XXXXXXXXXXXXXXXXXXX");
      },

解决方法

 header: {
        'content-type': 'application/json',
        'Authorization': "APPCODE " + "XXXXXXXXXXXXXXXXXXX"
      },

详细代码如下

confirm: function () {
    console.log("clicked confirm");
    this.setData({
      hidden: true
    });
    var timestamp = new Date().getTime();
    var apiUrl = "http://ddycapi.market.alicloudapi.com/violation/query";
    //注释掉的代码为废弃车首页和路帮网的免费接口,使用阿里云的api收费服务
    //var appId = "129";
    //var appKey = "4263c4f0-4f56-0135-3375-0242c0a80006";
    //var carInfo = "{plate_num=" + this.data.plateNo + "&body_num=" + this.data.frameNo + "&engine_num=" + this.data.engineNo + "&city_id=190&car_type=02}";
   // var signStr = appId + carInfo + timestamp + appKey;
   // var sign = util.md5(signStr);
    //console.log("carInfo:" + carInfo);
    //console.log("signStr:" + signStr);
    //console.log("sign:" + sign);
    //var url = apiUrl + "car_info=" + carInfo + "&api_id=" + appId + "&sign=" + sign + "×tamp=" + timestamp;
   // console.log("url:" + url);
    var that = this;
    wx.request({
      url: apiUrl,
      method:'post',
      data: { "plateNumber": "陕AD3738", "engineNo": "695176712", "vin": "662722", "carType": "02" },
      header: {
        'content-type': 'application/json',
        'Authorization': "APPCODE " + "XXXXXXXXXXXXXXXXXXX"
      },
      beforeSend: function (xhr){
        console.log('授权码');
        xhr.setRequestHeader("Authorization", "APPCODE "+"XXXXXXXXXXXXXXXXXXX");
      },
      success: function (res) {
        if (res.statusCode != 200) {
          console.log('接口调用异常');
          that.setData({
            resultModalHidden: false,
            resultMsg: '接口调用异常'
          });
        }
        var obj = res.data;
        var status = Number(obj.status);
        that.setData({
          resultModalHidden: false
        });
        switch (status) {
          case 1002:
            console.log('app_id有误');
            break;
          case 1003:
            console.log(' sign加密有误');
            break;
          case 1004:
            console.log('车牌号,汽车类型,违章城市 等字段不能为空');
            break;
          case 1005:
            that.setData({
              resultMsg: '输入的车辆信息有误,请查证后重新输入'
            });
            console.log('车辆信息有误');
            break;
          case 2000:
            that.setData({
              resultMsg: '恭喜,当前城市交管局暂无您的违章记录'
            });
            console.log('正常(无违章记录)');
            break;
          case 2001:
            console.log('正常(有违章记录)');
            break;
          case 5000:
            console.log('请求超时,请稍后重试');
            break;
          case 5001:
            console.log('交管局系统连线忙碌中,请稍后再试');
            break;
          case 5002:
            console.log('恭喜,当前城市交管局暂无您的违章记录');
            break;
          case 5003:
            console.log('数据异常,请重新查询');
            break;
          case 5004:
            console.log('系统错误,请稍后重试');
            break;
          case 5005:
            console.log(' 车辆查询数量超过限制');
            break;
          case 5006:
            console.log('你访问的速度过快, 请后再试');
            break;
          case 5008:
            that.setData({
              resultMsg: '输入的车辆信息有误,请查证后重新输入'
            });
            console.log('输入的车辆信息有误,请查证后重新输入');
            break;
          default:
            console.log('未知错误');
        }
        console.log(res)
      }
    })
  },


目录
相关文章
|
2月前
|
自然语言处理 算法 Java
地址描述转换为坐标点不使用API,有什么转换的方法?
地址描述转换为坐标点不使用API,有什么转换的方法?
275 64
|
28天前
|
测试技术 API 项目管理
API测试方法
【10月更文挑战第18天】API测试方法
45 1
|
21天前
|
监控 小程序 安全
小程序的 API 做了什么处理,能够做到全局变量的隐藏
【10月更文挑战第23天】小程序的 API 通过运行环境隔离、作用域限制、数据绑定机制、事件机制、状态管理、代码封装和模块化、安全策略和权限控制以及运行时监控和检测等多种手段来实现全局变量的隐藏。这些措施共同作用,确保了小程序的安全、稳定和可靠运行,同时也提高了开发效率和代码质量。
|
28天前
|
Java 大数据 API
别死脑筋,赶紧学起来!Java之Steam() API 常用方法使用,让开发简单起来!
分享Java Stream API的常用方法,让开发更简单。涵盖filter、map、sorted等操作,提高代码效率与可读性。关注公众号,了解更多技术内容。
|
1月前
|
JavaScript 前端开发 Java
多种语言请求API接口方法
每种语言和库的选择取决于具体需求、项目环境以及个人偏好。了解这些基本方法,开发者就可以根据项目需求选择合适的语言和库来高效地与API交互。
38 1
|
1月前
|
安全 测试技术 API
一图看懂API测试9种方法
一图看懂API测试九种方法:冒烟测试验证基本功能,功能测试确保符合规格,集成测试检查组件协同工作,回归测试防止新变更引入问题,负载测试评估性能稳定性,压力测试挑战极限负载,安全测试发现并修复漏洞,用户界面测试确保UI与API协调,模糊测试提升异常数据处理鲁棒性。
|
2月前
|
小程序 前端开发 API
微信小程序 - 调用微信 API 回调函数内拿不到 this 问题(解决方案)
本文讨论了在微信小程序中调用API回调函数时无法获取到`this`上下文的问题,并提供了解决方案。在回调函数中,使用一个变量(如`that`)来保存当前的`this`引用,然后在回调内部使用这个变量来访问当前页面的数据和方法。
|
3月前
|
UED 开发工具 iOS开发
Uno Platform大揭秘:如何在你的跨平台应用中,巧妙融入第三方库与服务,一键解锁无限可能,让应用功能飙升,用户体验爆棚!
【8月更文挑战第31天】Uno Platform 让开发者能用同一代码库打造 Windows、iOS、Android、macOS 甚至 Web 的多彩应用。本文介绍如何在 Uno Platform 中集成第三方库和服务,如 Mapbox 或 Google Maps 的 .NET SDK,以增强应用功能并提升用户体验。通过 NuGet 安装所需库,并在 XAML 页面中添加相应控件,即可实现地图等功能。尽管 Uno 平台减少了平台差异,但仍需关注版本兼容性和性能问题,确保应用在多平台上表现一致。掌握正确方法,让跨平台应用更出色。
52 0
|
3月前
|
数据采集 API TensorFlow
简化目标检测流程:深入探讨TensorFlow Object Detection API的高效性与易用性及其与传统方法的比较分析
【8月更文挑战第31天】TensorFlow Object Detection API 是一项强大的工具,集成多种先进算法,支持 SSD、Faster R-CNN 等模型架构,并提供预训练模型,简化目标检测的开发流程。用户只需准备数据集并按要求处理,选择预训练模型进行微调训练即可实现目标检测功能。与传统方法相比,该 API 极大地减少了工作量,提供了从数据预处理到结果评估的一站式解决方案,降低了目标检测的技术门槛,使初学者也能快速搭建高性能系统。未来,我们期待看到更多基于此 API 的创新应用。
35 0
|
3月前
|
API
【Azure API 管理】APIM中的Policy是否有调用速率的方法(熔断机制)
【Azure API 管理】APIM中的Policy是否有调用速率的方法(熔断机制)