背景:

  近期帮一个公司做第三方API的二次封装,需要部署到该公司网站。所获取的是Json数据格式。由于该公司原系统采用的ASP+VBS技术方案,因此采用VBS对API进行请求、封装。

实现:

废话不多说,直接上代码。由于某些原因,不能将所有代码贴出来,有问题的可以留言。

<!--#include file="LibJson.asp"--><script Language="jscript" runat="server">  Array.prototype.get = function(x) { return this[x]; };  function parseJSON(strJSON) { return eval("(" + strJSON + ")"); }
</script>  <%Sub writeData()Set My = MoLibJson.new()My.dateformat = "yyyy-MM-dd HH:mm:ss"My.put "status","ok"My.put "time",NowSet results = My.put("result")results.datatype="array"Set writetoResult = Server.CreateObject("Scripting.FileSystemObject")writetoResult.CreateTextFile ResultPh,trueSet resufile = writetoResult.OpenTextFile(ResultPh,2,True)resufile.Write My.toString()Set resufile = NothingEnd SubSub getDataByLocation (longitude,latitude)URL =  “http:xxxx.com/xx.json”weatherData = GetHttpPage(URL,"UTF-8")       'Http请求,获取返回的json数据Set obj = parseJSON(weatherData)     ‘对获取到的json数据进行解析‘生成json数据Set result1 = results.put()  result1.put "location",array(longitude,latitude),"vbarray"Set subPre = result1.put("precipitation")Set preHou = subPre.put("hourly")preHou.datatype="array"Set hou= obj.result.hourly.precipitationFor n=0 To 47Set kvHou = preHou.put()kvHou.put "value",hou.get(n).valuekvHou.put "datetime",hou.get(n).datetimeNextDim arrayData(59)Set minu= obj.result.minutely.precipitationFor n=0 To 59arrayData(n)= minu.get(n)NextsubPre.put "minutely",arrayData,"vbarray"End SubFunction GetHttpPage(url, charset) Dim http Set http = Server.createobject("Msxml2.ServerXMLHTTP")'Set http = Server.createobject("MSXML2.XMLHTTP.6.0")'set http = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
http.setOption(2) = 13056http.Open "GET", url, falsehttp.Send() If http.readystate<>4 ThenExit Function End If GetHttpPage = BytesToStr(http.ResponseBody, charset)Set http = Nothing
End functionFunction BytesToStr(body, charset)Dim objStreamSet objStream = Server.CreateObject("Adodb.Stream")objStream.Type = 1objStream.Mode = 3objStream.OpenobjStream.Write bodyobjStream.Position = 0objStream.Type = 2objStream.Charset = charsetBytesToStr = objStream.ReadText objStream.CloseSet objStream = Nothing
End Function%>

LibJson.asp.

这个代码是用的别人的,可以直接用

<script language="jscript" runat="server">
/*'by anlige at www.9fn.net*/
function MoLibJson(t,df){this.table=[];this.datatype=t||"object";this.dateformat=df||"";
}
MoLibJson.New = function(t,df){return new MoLibJson(t,df);};
MoLibJson.prototype.put=function(key,value,tp){if(value===undefined)return this.putnew(key||"TMP__");tp = tp||"";tp = tp.toLowerCase();if(tp=="vbarray" || this.IsVBArray(value))return this.putvbarray(key,value);if(tp=="arraylist")return this.put(key,value.split(","));if(tp=="dictionary" || this.IsDictionary(value))return this.putdictionary(key,value);if(tp=="rows" || this.IsRecordset(value))return this.putrows(key,value);this.table.push({key:key,value:value});return this.table[this.table.length-1];a
};
MoLibJson.prototype.putdictionary=function(key,value){return this.putnew(key).fromdictionary(value);
};
MoLibJson.prototype.fromdictionary=function(value){if(value.count<=0)return obj;var keys=(new VBArray(value.keys())).toArray();for(var i =0;i<keys.length;i++){this.put(keys[i],value.item(keys[i]));}return this;
};
MoLibJson.prototype.putnew=function(key){return this.put(key,new MoLibJson("object",this.dateformat))['value'];
};
MoLibJson.prototype.putnewarray=function(key){return this.put(key,new MoLibJson("array",this.dateformat))['value'];
};
MoLibJson.prototype.putvbarray=function(key,value){return this.put(key,(new VBArray(value)).toArray());
};
MoLibJson.prototype.putrows=function(key,rs,pagesize){return this.putnewarray(key).fromrows(rs,pagesize);
};
MoLibJson.prototype.fromrows=function(rs,pagesize){this.datatype="array";if(pagesize==undefined)pagesize=-1;var ps = rs.Bookmark;var k=0;while(!rs.eof && (k<pagesize || pagesize==-1)){k++;var tmp__=new Object();for(var i=0;i<rs.fields.count;i++){tmp__[rs.fields(i).Name]=rs.fields(i).value;}this.put("",tmp__);rs.MoveNext();}try{rs.Bookmark=ps;}catch(ex){}return this;
};
MoLibJson.prototype.toString = MoLibJson.prototype.getobjectstring=function(key){key=key||"";if(this.datatype=="array"){if(this.table.length<=0)return "[]";var ret="[";for(var i=0;i<this.table.length;i++){ret+=this.parse(this.table[i]["value"]) + ",";}if(ret!="[")ret=ret.substr(0,ret.length-1);ret+="]";if(key!="")return "{\"" + key + "\":" + ret + "}";return ret;}else{if(this.table.length<=0)return "{}";var ret="{";for(var i=0;i<this.table.length;i++){ret+="\""+this.table[i]["key"]+"\":" + this.parse(this.table[i]["value"]) + ",";}if(ret!="{")ret=ret.substr(0,ret.length-1);ret+="}";if(key!="")return "{\"" + key + "\":" + ret + "}";return ret;}
};
MoLibJson.prototype.del=function(key){if(this.table.length<=0)return;var tb = [],find=false;for(var i=0;i<this.table.length;i++){if(this.table[i]["key"]!=key){tb.push(this.table[i]);}else{find = true;}}if(find)this.table = tb;
};
MoLibJson.prototype.set=function(key,value){this.del(key);this.put(key,value);
};
MoLibJson.prototype.parse=function(value){if(value===null)return "null";if(this.IsVBArray(value))value=(new VBArray(value)).toArray();var ty = typeof(value);if(ty=="string"){return "\"" + this.encode(value) + "\"";}else if(ty=="number" || ty=="boolean"){return value;    }else if(ty=="date"){var dt = new Date(value);if(this.dateformat==""){return "\""+dt.toString()+"\"";    }else{return "\""+this.formatdate(value,this.dateformat)+"\"";    }}else if(ty=="object"){if(value.constructor){if(value.constructor==Array){var ret1="[";for(var j=0;j<value.length;j++){ret1+=this.parse(value[j])+",";}if(ret1!="[")ret1=ret1.substr(0,ret1.length-1);ret1+="]";return ret1;}else if(value.constructor==MoLibJson){return value.getobjectstring();}else if(value.constructor==Object){var o = new MoLibJson("object",this.dateformat);for(var i in value){if(value.hasOwnProperty && value.hasOwnProperty(i)) o.put(i,value[i]);    }    return o.getobjectstring();        }else if(value.constructor==Date){var dt = new Date(value);if(this.dateformat==""){return "\""+dt.toString()+"\"";    }else{return "\""+this.formatdate(value,this.dateformat)+"\"";    }}else{return this.encode(value.constructor.toString());    }}}return "\"unknown:" + ty +"\"";
};
MoLibJson.prototype.formatstring=function(src,format){if(!/^(left|right)\s(\d+)$/i.test(format))return src;var direction = /^(left|right)\s(\d+)$/i.exec(format)[1];var len = parseInt(/^(left|right)\s(\d+)$/i.exec(format)[2]);if(direction=="left")return src.substr(0,len);if(direction=="right")return src.substr(src.length-len,len);
};
MoLibJson.prototype.formatdate=function(dt,formatStr){if(typeof dt!="date")dt=new Date();dt = new Date(dt);var y=new Array(2),m=new Array(2),d=new Array(2),h=new Array(2),n=new Array(2),s=new Array(2),w,ws=new Array(2),t = new Array(1),H=new Array(2);y[0] = dt.getFullYear();m[0] = dt.getMonth()+1;d[0] = dt.getDate();h[0] = dt.getHours();H[0] = h[0] % 12;n[0] = dt.getMinutes();s[0] = dt.getSeconds();y[1] = y[0];m[1] = this.formatstring("0" +m[0],"right 2");d[1] = this.formatstring("0" +d[0],"right 2");h[1] = this.formatstring("0" +h[0],"right 2");H[1] = this.formatstring("0" +H[0],"right 2");n[1] = this.formatstring("0" +n[0],"right 2");s[1] = this.formatstring("0" +s[0],"right 2");ws[0] = "日,一,二,三,四,五,六".split(",");ws[1] = "Sun,Mon,Tues,Wed,Thur,Fri,Sat".split(",");t[0] = dt.getMilliseconds();w=dt.getDay()-1;var returnStr;returnStr = formatStr.replace(/yyyy/g,y[0]);returnStr = returnStr.replace(/yy/g,y[1]);returnStr = returnStr.replace(/MM/g,m[1]);returnStr = returnStr.replace(/M/g,m[0]);returnStr = returnStr.replace(/dddd/g,ws[0][w]);returnStr = returnStr.replace(/ddd/g,ws[1][w]);returnStr = returnStr.replace(/dd/g,d[1]);returnStr = returnStr.replace(/d/g,d[0]);returnStr = returnStr.replace(/HH/g,h[1]);returnStr = returnStr.replace(/H/g,h[0]);returnStr = returnStr.replace(/mm/g,n[1]);returnStr = returnStr.replace(/m/g,n[0]);returnStr = returnStr.replace(/ss/g,s[1]);returnStr = returnStr.replace(/s/g,s[0]);returnStr = returnStr.replace(/tttt/g,t[0]);return returnStr    ;
};
MoLibJson.prototype.encode=function(str){if(str==undefined) return "";if(str=="")return "";var i, j, aL1, aL2, c, p,ret="";aL1 = Array(0x22, 0x5C, 0x2F, 0x08, 0x0C, 0x0A, 0x0D, 0x09);aL2 = Array(0x22, 0x5C, 0x2F, 0x62, 0x66, 0x6E, 0x72, 0x74);for(i = 0;i<str.length;i++){p = true;c = str.substr(i,1);for(j = 0;j<=7;j++){if(c == String.fromCharCode(aL1[j])){ret += "\\" + String.fromCharCode(aL2[j]);p = false;break;}}if(p){var a = c.charCodeAt(0);if(a > 31 && a < 127){ret +=c}else if(a > -1 || a < 65535){var slashu = a.toString(16);while(slashu.length<4){slashu="0"+slashu;}ret += "\\u" + slashu;}}}return ret;
};
MoLibJson.prototype.IsDictionary=function(o) {return ((o != null) &&(typeof(o) == "object") &&(o instanceof ActiveXObject) &&(typeof(o.Add) == "unknown") &&(typeof(o.Exists) == "unknown") &&(typeof(o.Items) == "unknown") &&(typeof(o.Keys) == "unknown") &&(typeof(o.Remove) == "unknown") &&(typeof(o.RemoveAll) == "unknown") &&(typeof(o.Count) == "number") &&(typeof(o.Item) == "unknown") &&(typeof(o.Key) == "unknown"));
};MoLibJson.prototype.IsVBArray=function(o) {return ((o != null) &&(typeof(o) == "unknown") &&(o.constructor == VBArray) &&(typeof(o.dimensions) == "function") &&(typeof(o.getItem) == "function") &&(typeof(o.lbound) == "function") &&(typeof(o.toArray) == "function") &&(typeof(o.ubound) == "function"));
}
MoLibJson.prototype.IsRecordset=function(o) {return ((o != null) &&(typeof(o) == "object") &&(o instanceof ActiveXObject) &&(typeof(o.Fields) == "object") &&(typeof(o.CursorType) == "number") &&(typeof(o.LockType) == "number") &&(typeof(o.BookMark) == "number") &&(typeof(o.AbsolutePage) == "number" || typeof(o.AbsolutePage) == "unknown") &&(typeof(o.Recordcount) == "number" || typeof(o.Recordcount) == "unknown") &&(typeof(o.PageSize) == "number"));
}
</script>

转载于:https://www.cnblogs.com/ren-jie/p/5583812.html

VBS进行http请求及JSON数据的读取和生成相关推荐

  1. android post json格式,Android中post请求传递json数据给服务端的实例

    在最近的项目中有个需求是这样的: 入参封装成JSON,EXAMPLE: { "uuid": "iamauuid","clientType": ...

  2. android json传输数据到服务器,Android中post请求传递json数据给服务端的实例

    在最近的项目中有个需求是这样的: 入参封装成JSON,EXAMPLE: { "uuid": "iamauuid", "clientType" ...

  3. Android Retrofit框架请求复杂json数据

    之前的时候看过很多的博客对于json数据进行解析,今天有时间自己亲自对json数据的解析做了练习,在这里分享自己的练习过程中的一些小问题,希望可以帮助到更多的人 这个是我需要请求的json数据,其中我 ...

  4. 小程序模拟请求本地json数据文章合集

    https://blog.csdn.net/onil_chen/article/details/76850155 https://blog.csdn.net/lsy__lsy/article/deta ...

  5. 小程序模拟服务器,小程序模拟请求服务器json数据

    那么,怎么请求服务器json数据? 如果你是一枚前端,不会写后端接口的话 又想测试数据,看自己写的效果的时候 不要慌 那么,把你的json放在服务器底下 模拟请求服务器json数据即可 步骤: 1用能 ...

  6. html 网络请求 json数据,写一个json格式API,http请求接收json数据

    目前比较流行的公开API 大多都是返回json格式字符串.如何创建自己的基于http请求返回json数据的api? 如下: 返回JSON字符串的API 相关包:fastjson-1.2.2.jar 方 ...

  7. C#获取http请求的JSON数据并解析

    文章目录 1️⃣ C#获取http请求的JSON数据并解析 1.1 获取http的JSON数据 1.2 解析JSON数据 优质资源分享 C#获取http请求的JSON数据并解析,第一步,先拿到http ...

  8. php7 mysql json 小程序_微信小程序php传递post请求发送json数据以获取小程序码

    困扰了两天的问题终于解决了! 用php传递post请求,发送json数据到微信小程序提供的接口,以此获得微信小程序码,下面是代码展示:<?php //需要传递的json数据 //能传递的参数,详 ...

  9. java给第三方接口发送数据_对接第三方接口--使用post请求发送json数据

    对接第三方接口–使用post请求发送json数据 实习4个多月,终于转正!终于可以安心好好上班,好好学习!第一篇播客记录下工作中的中的小知识点. 本文记录的内容如下: 1.使用HttpClient相关 ...

  10. [js] localStorage 如何存储JSON数据并读取JSON数据

    localStorage是HTML5提供的再客户端实现本地存储的一种方法,但是localStorage方法只能存储字符串数据,有时候我们需要存储对象到本地比如:JSON:那么,localStorage ...

最新文章

  1. rpcgen的简单讲解及例子程序
  2. vue-threeJS数据驱动的三维图形可视化
  3. 跨年之际,中文版畅销书《TensorFlow深度学习实战大全》分享,直接送!
  4. Qt 不再使用 LGPLv2.1 授权
  5. Putty、Xshell连接Linux
  6. 30幅非常精美的海景摄影作品欣赏
  7. 可申请试用!GN4系列GPU云服务器重磅来袭
  8. 高并发C/S的TCP版本golang实现
  9. Java集合框架体系(超详细)
  10. LeetCode 915. 分割数组
  11. 使用mysqldump进行逻辑备份
  12. 齐齐哈尔计算机二级,2020齐齐哈尔市计算机二级报名时间|网上报名入口【8月20日9时开通】...
  13. 自动化测试必备实用工具,帮你提高工作效率 | 码云周刊第 88 期
  14. 洛谷 - P1012 - 拼数 - 排序
  15. 安卓一键新机_知道华为手机变慢的罪魁祸首吗?用这四招两年旧机秒变新机
  16. 三相短路电流计算机算法的原理什么,第三章电力系统三相短路电流及实用计算.ppt...
  17. cmos与非门电路、或非门电路
  18. SpringBoot中@Pattern注解对时间格式校验
  19. 电偶极子的MATLAB场模拟
  20. 《禅与摩托车维修艺术》摘录(二)

热门文章

  1. 负载均衡故障排错指南 (3)
  2. [VBA]_更改单元格背景颜色
  3. Refactoring Page Head
  4. 无法卸载K/3处理方法
  5. ixgbe驱动不支持三方兼容光模块SFP+SFP+或者QSFP的解决方案
  6. android http请求缓存,android 缓存http请求数据
  7. Linux检测内存泄露的脚本
  8. 第二部分 Automake的标准工程组织
  9. 蓝桥杯省赛2016年Java组B组
  10. 3807. 构造字符串——AcWing题库