HTTP Client Plugin

DolphinDB's httpClient plugin enables you to send HTTP requests and emails conveniently.

The DolphinDB httpClient plugin has different branches, such as release200 and release130. Each branch corresponds to a DolphinDB server version. Please make sure you are in the correct branch of the plugin documentation.

Build

Load Plugin

Download the precompiled plugin file under DolphinDBPlugin/httpClient/bin/linux64. Load the plugin with the following command in DolphinDB:

loadPlugin("/path/to/PluginHttpClient.txt");

This plugin uses the libcurl library. If the message "curl return: error setting certificate verify locations: CAfile: /etc/ssl/certs/ca-certificates.crt CApath: none" is displayed when visiting an HTTPS website, it's because cURL expects the certificate to be at the default path. Please download the root certificate for cURL using this command:

wget https://curl.haxx.se/ca/cacert.pem

Then place the downloaded file under the default directory as mentioned in the error message.

(Optional) Manually Build Plugin

Prerequisites: The static libraries of libcurl, libssl(version 1.0.1 on ARM; version 1.0.2 on x86), libcrypto(version 1.0.1 on ARM; version 1.0.2 on x86) and libz are available.

OpenSSL

version 1.0.1 for ARM architecture:

wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1u.tar.gz
tar -xzf openssl-1.0.2u.tar.gz
cd openssl-1.0.1u
./config shared --prefix=/tmp/ssl -fPIC
make
make install

version 1.0.2 for x86 architecture:

wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2u.tar.gz
tar -xzf openssl-1.0.2u.tar.gz
cd openssl-1.0.2u
./config shared --prefix=/tmp/ssl -fPIC
make
make install

cURL 7.47.0

wget https://github.com/curl/curl/releases/download/curl-7_47_0/curl-7.47.0.tar.gz
tar -zxf curl-7.47.0.tar.gz
cd curl-7.47.0
CFLAGS="-fPIC" ./configure --prefix=/tmp/curl --without-nss --with-ssl=/tmp/ssl --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt //specify the openssl path for https support. also specify the path to the default https certificate
make
make install

zlib 1.2.11

wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar -zxf zlib-1.2.11.tar.gz
cd zlib-1.2.11
CFLAGS="-fPIC" ./configure  --prefix=/tmp/zlib 
make 
make install

Build the Plugin

In the make build script, we need to specify the path of CURL_DIR and SSL_DIR and Z_DIR. For example:

mkdir build
cd build
cmake -DCURL_DIR=/tmp/curl -DSSL_DIR=/tmp/ssl -DZ_DIR=/tmp/zlib  ..
make -j

The plugin library libPluginHttpClient.so will be generated under the current directory.

Methods

httpGet

Send HTTP GET request.

Syntax

httpClient::httpGet(url, [params], [timeout], [headers])

Arguments

  • url: a string indicating the URL of HTTP request.
  • params: a string or dict (whose keys and values are strings) to send in the HTTP request. For example, suppose url is specified as "www.dolphindb.com":
    • if params is a string (e.g., "example"), the URL of the HTTP request would be "www.dolphindb.com?example";
    • if params is a dictionary (e.g., with 2 key-value pairs "name"->"ddb" and "id"->"111"), the URL of the HTTP request would be "www.dolphindb.com?id=111&name=ddb".
  • timeout: a non-negative integer indicating the the maximum time in milliseconds that an HTTP request can take. Default timeout is 0 which means it never times out during transfer.
  • headers: a string or dict (whose keys and values are strings) indicating the headers of the HTTP request.
    • If it's a dictionary (e.g., with 2 key-value pairs "groupName"->"dolphindb" and "groupId"->"11"), two headers "groupId:11" and "groupName:dolphindb" will be added to the HTTP request ;
    • If it's a string, it must have the pattern <key>:<value> and it will be added as a header to the request.

Return

A dictionary object containing following keys:

  • responseCode: HTTP status code
  • headers: HTTP response header
  • text: HTTP response body
  • elapsed: HTTP request elapsed time

Example

loadPlugin('/home/zmx/worker/DolphinDBPlugin/httpClient/PluginHttpClient.txt');
param=dict(string,string);
header=dict(string,string);
param['name']='zmx';
param['id']='111';
header['groupName']='dolphindb';
header['groupId']='11';
//Please set up your own httpServer ex.(python -m SimpleHTTPServer 8900)
url = "localhost:8900";
res = httpClient::httpGet(url,param,1000,header);

httpPost

Send HTTP POST request.

Syntax

httpClient::httpPost(url, [params], [timeout], [headers])

Arguments

  • url: a string indicating the URL of HTTP request.
  • params: a string or dict (whose keys and values are strings) to send in the HTTP request. For example, suppose url is specified as "DolphinDB - High Performance Time-series Database ":
    • if params is a string (e.g., "example"), the URL of the HTTP request would be "www.dolphindb.com?example";
    • if params is a dictionary (e.g., with 2 key-value pairs "name"->"ddb" and "id"->"111"), the URL of the HTTP request would be "www.dolphindb.com?id=111&name=ddb".
  • timeout: a non-negative integer indicating the the maximum time in milliseconds that you allow the HTTP request to take. Default timeout is 0 which means it never times out during transfer.
  • headers: a string or dict (whose keys and values are strings) indicating the headers of the HTTP request.
    • If it's a dictionary (e.g., with 2 key-value pairs "groupName"->"dolphindb" and "groupId"->"11"), two headers "groupId:11" and "groupName:dolphindb" will be added to the HTTP request ;
    • If it's a string, it must have the pattern <key>:<value> and it will be added as a header to the request.

Return

A dictionary object containing following keys:

  • responseCode: HTTP status code
  • headers: HTTP response header
  • text: HTTP response body
  • elapsed: HTTP request elapsed time

Example

loadPlugin('/home/zmx/worker/DolphinDBPlugin/httpClient/PluginHttpClient.txt');
param=dict(string,string);
header=dict(string,string);
param['name']='zmx';
param['id']='111';
header['groupName']='dolphindb';
header['groupId']='11';
//Please set up your own httpServer e.g. (python -m SimpleHTTPServer 8900)
url = "localhost:8900";
res = httpClient::httpPost(url,param,1000,header);

emailSmtpConfig

Configure the email server.

Note: To send email using the httpClient plugin, the SMTP service on your mail account must be enabled.

Syntax

httpClient::emailSmtpConfig(emailName,host,post)

Arguments

  • emailName: a string indicating the domain name in your email address. For example, "gmail.com" or "yahoo.com".
  • host: a string indicating your SMTP server address.
  • port: an integer (INT) indicating the port number of your email server. If this parameter is unspecified, it takes the default value of 25.

Examples

emailName="example.com";
host="smtp.example.com";
port=25;
httpClient::emailSmtpConfig(emailName,host,port);