cpr_plugin
TSL语言的跨平台实现的http request插件,用于发起http请求。
安装
(已集成到mytsl
发行版中)
动态库文件:Windows: cpr_plugin.dll 或者 Linux: libcpr_plugin.so。
把相关的动态库文件拷贝到执行服务器或者TSL目录的plugin目录。 注意:在执行服务器上使用需要配置相关权限,配置方法同原有HTTP权限配置。
(如果需要下载兼容正式版的Windows版本的动态库文件请访问这里)。
使用指南
提供的TSL函数:
http_session_create
http_session_create()
: 创建Session并返回。
-
参数列表 无
-
返回值 会话ID
http_session_destroy
http_session_destroy(session)
: 删除Session。
-
参数列表
参数 描述 session 会话ID -
返回值 无
http_session_get
http_session_get(session, url, [query], [headers], [timeout])
: 发起http GET请求,返回结果。
-
参数列表
参数 描述 session 会话ID url 请求的URL地址。 query 请求的参数,可选参数。 header 请求的头,可选参数,可以是字符串类型,也可以是字符串对数组,例如array('UserAgent' : "TSL")。 timeout 超时设置,毫秒进度,可选参数。 -
返回值
数组类型:
下标 值 code 返回的状态码 header 返回头,数组类型。 body 返回的数据,Binary类型。 cookies 返回的cookie是,数组类型。 url URL地址,可以通过这个来查看query参数是否是正确的。
http_session_post
http_session_post(session, url, [query], [post_data], [headers], [timeout])
: 发起http POST请求,返回结果。
-
参数列表
参数 描述 session 会话ID url 请求的URL地址。 query 请求的参数,可选参数。 post_data post的参数,可以是字符串类型,也可以是字符串对数组,可选参数。 header 请求的头,可选参数,可以是字符串类型,也可以是字符串对数组,例如array('UserAgent' : "TSL")。 timeout 超时设置,毫秒进度,可选参数。 -
返回值
数组类型:
下标 值 code 返回的状态码 header 返回头,数组类型。 body 返回的数据,Binary类型。 cookies 返回的cookie是,数组类型。 url URL地址,可以通过这个来查看query参数是否是正确的。
http_session_put
http_session_put(session, url, [query], [post_data], [headers], [timeout])
: 发起http PUT,返回结果。
-
参数列表
参数 描述 session 会话ID url 请求的URL地址。 query 请求的参数,可选参数。 post_data post的参数,可以是字符串类型,也可以是字符串对数组,可选参数。 header 请求的头,可选参数,可以是字符串类型,也可以是字符串对数组,例如array('UserAgent' : "TSL")。 timeout 超时设置,毫秒进度,可选参数。 -
返回值
数组类型:
下标 值 code 返回的状态码 header 返回头,数组类型。 body 返回的数据,Binary类型。 cookies 返回的cookie是,数组类型。 url URL地址,可以通过这个来查看query参数是否是正确的。
http_session_delete
http_session_delete(session, url, [query], [post_data], [headers], [timeout])
: 发起http DELETE请求,返回结果。
-
参数列表
参数 描述 session 会话ID url 请求的URL地址。 query 请求的参数,可选参数。 post_data post的参数,可以是字符串类型,也可以是字符串对数组,可选参数。 header 请求的头,可选参数,可以是字符串类型,也可以是字符串对数组,例如array('UserAgent' : "TSL")。 timeout 超时设置,毫秒进度,可选参数。 -
返回值
数组类型:
下标 值 code 返回的状态码 header 返回头,数组类型。 body 返回的数据,Binary类型。 cookies 返回的cookie是,数组类型。 url URL地址,可以通过这个来查看query参数是否是正确的。
http_session_head
http_session_head(session, url, [query], [post_data], [headers], [timeout])
: 发起http HEAD请求,返回结果。
-
参数列表
参数 描述 session 会话ID url 请求的URL地址。 query 请求的参数,可选参数。 post_data post的参数,可以是字符串类型,也可以是字符串对数组,可选参数。 header 请求的头,可选参数,可以是字符串类型,也可以是字符串对数组,例如array('UserAgent' : "TSL")。 timeout 超时设置,毫秒进度,可选参数。 -
返回值
数组类型:
下标 值 code 返回的状态码 header 返回头,数组类型。 body 返回的数据,Binary类型。 cookies 返回的cookie是,数组类型。 url URL地址,可以通过这个来查看query参数是否是正确的。
http_session_options
http_session_options(session, url, [query], [post_data], [headers], [timeout])
: 发起http OPTIONS请求,返回结果。
-
参数列表
参数 描述 session 会话ID url 请求的URL地址。 query 请求的参数,可选参数。 post_data post的参数,可以是字符串类型,也可以是字符串对数组,可选参数。 header 请求的头,可选参数,可以是字符串类型,也可以是字符串对数组,例如array('UserAgent' : "TSL")。 timeout 超时设置,毫秒进度,可选参数。 -
返回值
数组类型:
下标 值 code 返回的状态码 header 返回头,数组类型。 body 返回的数据,Binary类型。 cookies 返回的cookie是,数组类型。 url URL地址,可以通过这个来查看query参数是否是正确的。
http_session_setauth
http_session_setauth(session, user, password, [auth method])
: 设置认证信息。
-
参数列表
参数 描述 session 会话ID user 用户名 password 密码 auth method 认证方式,可选参数,默认是"basic", 还可以是"digest", "ntlm", "oauth"。 -
返回值 无
http_session_setproxy
http_session_setproxy(session, proxies, [proxies auth])
: 设置代理服务器。
-
参数列表
参数 描述 session 会话ID proxies 代理服务器列表,数组类型,可以分别设置http和https代理,例如 array('http':'http://myproxy:port', 'https':'http://myproxy:port') proxies auth 代理认证方式,数组类型,可选参数,和代理服务器列表对应,例如 array('http':array(user, password)) -
返回值 无
http_session_setheader
http_session_setheader(session, header)
: 设置Header。
-
参数列表
参数 描述 session 会话ID header 请求的头,字符串对数组类型。 -
返回值 无
http_session_setcookie
http_session_setcookie(session, cookies)
: 设置Cookies。
-
参数列表
参数 描述 session 会话ID cookies 字符串对数组类型。 -
返回值 无
http_session_setuseragent
http_session_setuseragent(session, agent)
: 设置User-Agent。
-
参数列表
参数 描述 session 会话ID agent 字符串类型。 -
返回值 无
http_session_settimeout
http_session_settimeout(session, timeout)
: 设置Timeout。
-
参数列表
参数 描述 session 会话ID timeout 超时设置,毫秒进度,整数类型。 -
返回值 无
http_session_setverifyssl
http_session_setverifyssl(session, verify)
: 设置是否校验ssl证书。
-
参数列表
参数 描述 session 会话ID verify 整数类型,0 不用校验,1 需要校验。 -
返回值 无
http_session_setlowspeed
http_session_setlowspeed(session, limit, time)
: 设置在一段时间内必须传输多少数据,这样可以在长时间没传输数据时断开连接。
-
参数列表
参数 描述 session 会话ID limit 传输的字节数,整数类型。 time 给定的时间段,精度是秒,整数类型。 -
返回值 无
http_session_setlimitrate
http_session_setlimitrate(session, downloadrate, uploadrate)
: 设置下载和上传限速,单位是字节/秒。
-
参数列表
参数 描述 session 会话ID downloadrate 下载过程中最大速度,单位是字节/秒,整数类型。 uploadrate 上传过程中最大速度,单位是字节/秒,整数类型。 -
返回值 无
http_get
http_get(url, [query], [headers], [timeout])
: 发起HTTP GET请求,返回结果。
-
参数列表
参数 描述 session 会话ID url 请求的URL地址。 query 请求的参数,可选参数。 header 请求的头,可选参数,可以是字符串类型,也可以是字符串对数组,例如array('UserAgent' : "TSL")。 timeout 超时设置,毫秒进度,可选参数。 -
返回值
数组类型:
下标 值 code 返回的状态码 header 返回头,数组类型。 body 返回的数据,Binary类型。 cookies 返回的cookie是,数组类型。 url URL地址,可以通过这个来查看query参数是否是正确的。
http_post
http_post(url, [query], [post_data], [headers], [timeout])
: 发起HTTP POST请求,返回结果。
-
参数列表
参数 描述 session 会话ID url 请求的URL地址。 query 请求的参数,可选参数。 post_data post的参数,可以是字符串类型,也可以是字符串对数组,可选参数。 header 请求的头,可选参数,可以是字符串类型,也可以是字符串对数组,例如array('UserAgent' : "TSL")。 timeout 超时设置,毫秒进度,可选参数。 -
返回值
数组类型:
下标 值 code 返回的状态码 header 返回头,数组类型。 body 返回的数据,Binary类型。 cookies 返回的cookie是,数组类型。 url URL地址,可以通过这个来查看query参数是否是正确的。
http_put
http_put(url, [query], [post_data], [headers], [timeout])
: 发起HTTP PUT请求,返回结果。
-
参数列表
参数 描述 session 会话ID url 请求的URL地址。 query 请求的参数,可选参数。 post_data post的参数,可以是字符串类型,也可以是字符串对数组,可选参数。 header 请求的头,可选参数,可以是字符串类型,也可以是字符串对数组,例如array('UserAgent' : "TSL")。 timeout 超时设置,毫秒进度,可选参数。 -
返回值
数组类型:
下标 值 code 返回的状态码 header 返回头,数组类型。 body 返回的数据,Binary类型。 cookies 返回的cookie是,数组类型。 url URL地址,可以通过这个来查看query参数是否是正确的。
http_delete
http_delete(url, [query], [post_data], [headers], [timeout])
: 发起HTTP DELETE请求,返回结果。
-
参数列表
参数 描述 session 会话ID url 请求的URL地址。 query 请求的参数,可选参数。 post_data post的参数,可以是字符串类型,也可以是字符串对数组,可选参数。 header 请求的头,可选参数,可以是字符串类型,也可以是字符串对数组,例如array('UserAgent' : "TSL")。 timeout 超时设置,毫秒进度,可选参数。 -
返回值
数组类型:
下标 值 code 返回的状态码 header 返回头,数组类型。 body 返回的数据,Binary类型。 cookies 返回的cookie是,数组类型。 url URL地址,可以通过这个来查看query参数是否是正确的。
http_head
http_head(url, [query], [post_data], [headers], [timeout])
: 发起HTTP HEAD请求,返回结果。
-
参数列表
参数 描述 session 会话ID url 请求的URL地址。 query 请求的参数,可选参数。 post_data post的参数,可以是字符串类型,也可以是字符串对数组,可选参数。 header 请求的头,可选参数,可以是字符串类型,也可以是字符串对数组,例如array('UserAgent' : "TSL")。 timeout 超时设置,毫秒进度,可选参数。 -
返回值
数组类型:
下标 值 code 返回的状态码 header 返回头,数组类型。 body 返回的数据,Binary类型。 cookies 返回的cookie是,数组类型。 url URL地址,可以通过这个来查看query参数是否是正确的。
http_options
http_options(url, [query], [post_data], [headers], [timeout])
: 发起HTTP OPTIONS请求,返回结果。
-
参数列表
参数 描述 session 会话ID url 请求的URL地址。 query 请求的参数,可选参数。 post_data post的参数,可以是字符串类型,也可以是字符串对数组,可选参数。 header 请求的头,可选参数,可以是字符串类型,也可以是字符串对数组,例如array('UserAgent' : "TSL")。 timeout 超时设置,毫秒进度,可选参数。 -
返回值
数组类型:
下标 值 code 返回的状态码 header 返回头,数组类型。 body 返回的数据,Binary类型。 cookies 返回的cookie是,数组类型。 url URL地址,可以通过这个来查看query参数是否是正确的。
范例
在会话期间保持cookies
test_case("http session cookies")
begin
session := http_session_create();
resp := http_session_get(session, 'https://httpbin.org/cookies/set/sessioncookie/123456789');
CHECK_EQ(resp['code'], 200);
resp2 := http_session_get(session,'https://httpbin.org/cookies');
CHECK_EQ(resp2['code'], 200);
CHECK_EQ(resp['cookies'], resp2['cookies']);
http_session_destroy(session);
end;
发起GET请求
TS_HQ_URL := 'http://www.tinysoft.com.cn/cgi-bin/HQ_UpdateV1.2/HQ_Server4.tsl';
MinDay := IntToDate(20090101);
session := http_session_create();
resp := http_session_get(session, TS_HQ_URL, "", array("MinDay":IntToStr(MinDay), "StockID" : "SH000001"), 15000);
echo resp['code'],resp['header'],resp['body'];
http_session_destroy(session);
发起POST请求
test_case("http Post SingleTest")
begin
session := http_session_create();
resp := http_session_post(session, 'http://testserver/url_post.html', '', array("x":"5"));
CHECK_EQ(resp['code'], 201);
CHECK_EQ(resp['header']['Content-Type'], 'application/json');
CHECK_EQ(resp['body'], '{\n \"x\": 5\n}');
http_session_destroy(session);
end;
test_case("http Post MultipleTest")
begin
session := http_session_create();
resp := http_session_post(session, 'http://testserver/url_post.html', '', array("x":"1", "y":"2"));
CHECK_EQ(resp['code'], 201);
CHECK_EQ(resp['header']['Content-Type'], 'application/json');
CHECK_EQ(resp['body'], '{\n \"x\": 1,\n \"y\": 2,\n \"sum\": 3\n}');
http_session_destroy(session);
end;
设置代理服务器
session := http_session_create();
http_session_setproxy(session, array('http':'http://127.0.0.1:3128','https':'http://127.0.0.1:3128'));