接口请求特殊字符

来源:互联网 发布:自制相册软件下载 编辑:程序博客网 时间:2024/06/11 14:58
在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


原创粉丝点击