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