描述:
将url的返回结果封装成文件流。
语法:
httpfile(url:cs, param:cs:method;header)
备注:
将HTTP服务中url串的返回结果封装成文件流,只读且不能分段读取。
参数:
url |
HTTP服务的url串格式。 port为HTTP服务中配置的端口号。dfx路径相对于工具 - 选项 - 环境中配置的主目录。 HTTP服务的url串格式,分两种情况: 一、集算器风格 使用集算器的http服务时,url的写法如下: http://IP:port /dfx1.dfx() http://IP:port /dfx1.dfx(arg1,arg2,...) http://IP:port/dfx1.dfx(...)dfx2.dfx http://[IP6]:port /dfx1.dfx() 1、只有一个dfx文件。如果dfx有参数,则在括号里依次写参数值,参数值间用逗号分隔;如果没有参数,则参数为空。此时dfx里的返回值已经是用户所需要的格式。 2、有两个dfx。这种情况用于用户想要的返回值格式与dfx1的返回值格式不同,从而使用dfx2把dfx1的返回值改为自己需要的格式。dfx1的写法与第1种情况中的dfx相同,但是此处的dfx1仅支持单结果集。dfx2为单参数的程序,参数值为dfx1的返回值。 在dfx2中可以将dfx1的返回值转换成自己需要的格式,然后作为dfx2的返回值。例如:dfx1中缺省返回的序表字段间是以"|"分隔,如果想以空格分隔,则可以使用dfx2对dfx1的结果进行处理,使得序表字段间以空格分隔。 如果有返回第二个结果集(必须是串),则认为是header。 3、IP协议为IP6时,需要对IP地址添加中括号“[]”。 二、常规风格 url写法如下: http://IP:port/splfile?argi=vi&... ,splfile不可以带扩展名,否则无法读到问号后的参数,程序按照.splx、.spl、.dfx的扩展名顺序查找。 三、result风格 当spl脚本文件保存在主目录的子目录时,可以使用result风格调用方式。 url的写法如下: http://IP:port /Path/ splfile 调用无参数的spl脚本文件。 http://IP:port /Path/ splfile /argvalue1/argvalue2,... 调用带参数的spl脚本文件。 Path 表示splfile相对于主目录的路径; splfile 表示spl脚本文件名称,调用时不带扩展名,扩展名以.splx/.spl/.dfx为序找; argvalue1/argvalue2,... 表示splfile中的参数值,多个参数之间用“/”隔开。 注:当splfile中用到数据库中的数据时,需要在raqsoftconfig.xml中对应的DB节点中,配置autoConnect的属性值为true,否则无法连接数据库。 |
cs |
字符集,支持的字符集是jvm自带的字符集。缺省则为虚拟机默认值。 |
param |
method方式上传的参数,形如p1=v1&p2=v2…。可以省略。 |
method |
传递param参数值时使用的方式,值为GET或POST,缺省为POST。 |
header |
header属性可以有多个形,如:headerName1:value1,headerName2:value2,...可以省略;格式为"property":"value",…;对返回文件对象执行.property()时,将解释为返回header的属性。 |
返回值:
文件流
示例:
|
A |
|
1 |
=httpfile("http://localhost:9090/p1.dfx()":"GBK").import@t() |
p1.dfx内容如下:
加载http服务上的文件“p1.dfx”,字符集为GBK。
|
2 |
=httpfile("http://localhost:9090/p2.dfx(3)":"GBK").import@t() |
p2.dfx内容如下:StuId为参数
3为p2.dfx的参数值 :
|
3 |
=httpfile("http://localhost:9090/p3.dfx(3,Class%20two)":"GBK").import@t() |
p3.dfx内容如下:StuId,Class为参数
多参数时以逗号分隔:
|
4 |
=httpfile("http://localhost:9090/http2.dfx()").import@t() |
http2.dfx内容如下:
返回结果:
|
5 |
=httpfile("http://127.0.0.1:9090/http2.dfx()http3.dfx").import@t() |
http3.dfx内容如下:
返回结果:
http2.dfx缺省返回由STATE字段值组成的序列,但是期望的效果是以逗号作为分隔符并且以字符串的形式返回,所以使用http3.dfx对http2.dfx的结果进一步处理。 |
6 |
=httpfile("http://192.168.0.131:6080/myweb/servlet/testServlet?table =employee&type=json") |
testServlet可以返回json格式的员工信息字符串。 |
7 |
=httpfile("http://localhost:6080/myweb/servlet/testServlet":"GBK" ,"table=employee&type=json":"GBK":"POST") |
使用POST方式传递参数。 |
8 |
=httpfile("http://127.0.0.1:8182/scada/v1/uaes/datapoint/history/rawvalue/rtdb/access","{\"nodeIds\":[\"ns=102;s=AI_002_0600.PV\"], \"startTime\":\"2018/6/28 13:10:00\", \"endTime\":\"2018/6/28 13:11:0\", \"returnBounds\":\"false\", \"maxSizePerNode\":\"10\"}"; "Content-Type":"application/json") |
服务器端用json方式传参数, param参数写成一个json串的形式,并在函数中指定header属性Content-Type,与前面的参数用分号隔开。 |
9 |
=httpfile("http://127.0.0.1:8503/sr/pm/gypb/3/15").read() |
gypb.dfx内容如下:
网格参数:
使用result风格, /sr/pm表示dfx相对于主目录的位置,gypb表示调用的dfx为gypb.dfx,3/15表示参数id的值为3,参数parent的值为15。 |
10 |
=httpfile("http://192.168.74.1:8508/dc/22").read() |
如果是在主目录下,端口号后不用跟路径直接拼接/splfile,该URL表示,dc.dfx保存在主目录下,参数值为22。 |
11 |
=httpfile("http://[fe80::2918:abe0:3017:8401%15]:8503/emp.dfx()":"GBK").import@t() |
加载IP6协议http服务上的文件“emp.dfx”,字符集为GBK。 |
12 |
=httpfile("http://127.0.0.1:8503/emp?dept=HR&salary=5000 ").import@t() |
emp.Splx文件内容如下:
网格参数如下:
url使用常规风格 。 |