
在web开发或者接口开发中,我们常常需要进行一些http请求的转发,也就是js中的跨域请求或域内请求,比如在http://www.offeu.com内去请求http://www.ykipa.com的接口,在js中我们是需要在被请求端设置一些参数,以允许跨域请求,在脚本模型中则不需要那么麻烦,直接调用内置函数HTTP就可以了,它是基于delphi xe8以后集成的httpclient来实现的,支持https的请求。
之前还发过一篇文章专门介绍如何调用阿里云API市场中的IP查询接口,就是https的,大家可以去看一下,步骤也比较简单。
个人认为,http请求转发这块是比较常用的功能,所以优先进行介绍,这样就可以通过脚本实现很多功能,比如给你的手机app提供统一的后台接口,去转接天气预报、短信发送、条码生成等等三方接口。
<?
描述: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);
?>