跳转至

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'));

设置认证

session := http_session_create();
http_session_setauth(session, 'user', 'pass');
resp := http_session_get(session, 'http://www.httpbin.org/basic-auth/user/pass');
echo tostn(resp);