接口请求特殊字符

在ajax请求时特殊字符出错,在请求时有一个参数内容含有“&”,导致参数被http截断,需要做特殊字符处理,改成“%26”,一直以为是get的请求长度限制造成被截断

程序为vue调用自己的api接口,再在自己的接口内调用第三方的接口(因为含有key,secret等原因);
1、getAccessToken(),只传递第三方的url其余参数是在后台拼凑,没有特殊字符,正常运行;
2、前台的交互mouseDownControl(),向自己的后台api传递拼凑好的数据,第三方的api参数格式(accessToken=at.4g01l53x0w22xbp30ov33q44app1ns9m &deviceSerial=502608888 &channelNo=1 &direction=2 &speed=1),所以直接用&吧参数拼凑,但是每次都是到accessToken后就没有数据了,一开始以为是get/Post的问题,但是改了并没有解决,然后查看到 浏览器内 network的请求头,发现浏览器就没有向后台传递后面的数据,才发现是特殊字符的问题,改拼凑的数据改为(accessToken=at.4g01l53x0w22xbp30ov33q44app1ns9m %26deviceSerial=502608888 %26channelNo=1 %26direction=2 %26speed=1),

 	   httpRequest(url,sendData){
                return $.ajax({
                    type: "GET",
                    url: "http://***********/xmtdt.asmx/getYsApiData?para={'Token':'" + this.token + "','url':'" + url + "','sendData':'" + sendData + "'}", 
                    dataType: 'json',
                });
            },
            //对设备进行开始云台控制,开始云台控制之后必须先调用停止云台控制接口才能进行其他操作,包括其他方向的云台转动
            //token
            getAccessToken(){
                let vm=this;
                this.httpRequest("https://open.ys7.com/api/lapp/token/get","").then(function (json) {
                    var data=JSON.parse(json.Results);
                    console.log("获取token:",data.data.accessToken);
                    vm.accessToken=data.data.accessToken;
                });

            },
            //移动方向
            //url:https://open.ys7.com/api/lapp/device/ptz/start
            //data:accessToken=at.4g01l53x0w22xbp30ov33q44app1ns9m&deviceSerial=502608888&channelNo=1&direction=2&speed=1
            mouseDownControl(direction){
                let sendData="accessToken="+this.accessToken+"%26deviceSerial="+this.deviceSerial+"%26channelNo="+this.channelNo+"%26direction="+direction+"%26speed="+1;
                this.httpRequest("https://open.ys7.com/api/lapp/device/ptz/start",sendData).then(function(json){
                    var data=JSON.parse(json.Results);
                    console.log("云台方向控制:",data.code+data.msg);
                    if(data.code!=200){
                        alert(data.msg);
                    }
                });
            },
百度如下:
符号 	含义 			编码
+ 	+号表示空格 		%2B
空格 	用+号或者编码 		%20
/ 	分隔目录和子目录 		%2F
? 	分隔实际的 URL 和参数 	%3F
% 	指定特殊字符 		%25
# 	表示书签 			%23
& 	参数间的分隔符 		%26
= 	URL 中指定参数的值 	%3D


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值