httpfile()

阅读(6171) 标签: url, 返回结果, 封装成文件流,

描述:

url的返回结果封装成文件流。

语法:

httpfile(url:cs, param:cs:method;header)

备注:

HTTP服务中url串的返回结果封装成文件流,只读且不能分段读取。

参数:

url

HTTP服务的url串格式。

portHTTP服务中配置的端口号。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的返回值格式不同,从而使用dfx2dfx1的返回值改为自己需要的格式。dfx1的写法与第1种情况中的dfx相同,但是此处的dfx1仅支持单结果集。dfx2为单参数的程序,参数值为dfx1的返回值。

dfx2中可以将dfx1的返回值转换成自己需要的格式,然后作为dfx2的返回值。例如:dfx1中缺省返回的序表字段间是以"|"分隔,如果想以空格分隔,则可以使用dfx2dfx1的结果进行处理,使得序表字段间以空格分隔。

如果有返回第二个结果集(必须是串),则认为是header

3IP协议为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参数值时使用的方式,值为GETPOST,缺省为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为参数

3p2.dfx的参数值

3

=httpfile("http://localhost:9090/p3.dfx(3Class%20two)":"GBK").import@t()

p3.dfx内容如下:StuIdClass为参数

多参数时以逗号分隔:

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.dfxhttp2.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表示调用的dfxgypb.dfx3/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使用常规风格