在web开发或者接口开发中,我们常常需要进行一些http请求的转发,也就是js中的跨域请求或域内请求,比如在http://www.offeu.com内去请求http://www.ykipa.com的接口,在js中我们是需要在被请求端设置一些参数,以允许跨域请求,在脚本模型中则不需要那么麻烦,直接调用内置函数HTTP就可以了,它是基于delphi xe8以后集成的httpclient来实现的,支持https的请求。
<? 描述:HTTP请求转发函数,参数固定9个,支持ssl 参数: 0:vUrl.asText 网址,如http://或者https:// 1:vParam.asText 参数,请用&间隔,自行对值编码后传入或者传入后设置需要编码 2:vHeaders.asText 自定义http头,编码后传入 3:vMethod.asText='GET' 目前支持soap/post/get三种方法 4:vTimeout.asInteger=1000 //超时设置,不能少于100毫秒,1000为一秒 5:RequestCodeing.asInteger=65001 //65001=utf8 936=gbk 6:vResponseCoding.asInteger=65001 7:vEncodeing.asBoolean=true //是否对参数进行编码 8:vDecoding.asBoolean=false //是否对返回值进行解码 调用:<? HTTP(网址,参数,http头,请求方法,超时时间,提交编码,返回编码,是否编码,是否解码); ?> 返回:rtc_Text 文本 案例: //获取指定编码文件内容 HTTP('http://offeu.com/gbk.txt','','','GET',10000,936,936,false,false);' >>> ' HTTP('http://offeu.com/gbk.txt','','','GET',10000,936,936,false,true);'<br>' HTTP('http://offeu.com/utf8.txt','','','GET',10000,65001,65001,false,false);' >>> ' HTTP('http://offeu.com/utf8.txt','','','GET',10000,65001,65001,false,true);'<br>' //传utf8过去,再取回来并解码 HTTP('http://offeu.com/ask/echo.api','id='+Urlencode('测试',65001,true),'','POST', 10000,65001,65001,false,false);' >>> ' HTTP('http://offeu.com/ask/echo.api','id=测试','','POST',10000,65001,65001,true, true);'<br>' //传gbk过去,再取回来并解码 HTTP('http://offeu.com/ask/echo.api','id='+Urlencode('测试',936,true),'','POST', 10000,65001,65001,false,false);' >>> ' Urlencode(HTTP('http://offeu.com/ask/echo.api','id=测试','','POST',10000,936,65001, true,false),936,false);'<br>' //阿里去市场api测试,ssl协议测试 $x:=JsonToRecord(HTTP('http://offeu.com/ask/getip.api','','','GET',5000,65001, 65001,false,false)); HTTP('https://dm-81.data.aliyun.com/rest/160601/ip/getIpInfo.json' ,'ip='+$x('ip'),//如果脚本在服务器上,直接CLIENT.IP就行,不用转一手 'Authorization='+URLencode('APPCODE 623dd1f8a3c44be1b21177eda4330978',65001,true), 'get',10000,65001,65001,false,false); ?>
之前还发过一篇文章专门介绍如何调用阿里云API市场中的IP查询接口,就是https的,大家可以去看一下,步骤也比较简单。
个人认为,http请求转发这块是比较常用的功能,所以优先进行介绍,这样就可以通过脚本实现很多功能,比如给你的手机app提供统一的后台接口,去转接天气预报、短信发送、条码生成等等三方接口。