发送HTTP请求。
返回请求的响应数据。如果返回值为JSON字符串,JavaScript语言的策略中可以使用JSON.parse()函数解析,C++语言的策略中可以使用json::parse()函数解析。参数options结构中如果debug设置为true,返回值为对象(JSON);如果debug设置为false,返回值为字符串。
string / object
HttpQuery(url) HttpQuery(url, options)
HTTP请求的URL地址。 url true string HTTP请求相关配置参数,可以使用以下结构:
{
method: "POST",
body: "a=10&b=20&c=30",
charset: "UTF-8",
cookie: "session_id=12345; lang=en",
debug: false,
headers: {"TEST-HTTP-QUERY": "123"},
timeout: 1000
}
true时,此次HttpQuery函数调用返回完整的响应报文;设置为false时仅返回响应报文Body中的数据。此结构中的所有字段均为可选,例如可以不设置headers字段。
options
false
object
function main(){
// 一个不带参数的GET请求示例
var info = JSON.parse(HttpQuery("https://www.okx.com/api/v5/public/time"))
Log(info)
// 一个带参数的GET请求示例
var ticker = JSON.parse(HttpQuery("https://www.okx.com/api/v5/market/books?instId=BTC-USDT"))
Log(ticker)
}
import json
import urllib.request
def main():
# HttpQuery不支持Python,可以使用urllib/urllib2库替代
info = json.loads(urllib.request.urlopen("https://www.okx.com/api/v5/public/time").read().decode('utf-8'))
Log(info)
ticker = json.loads(urllib.request.urlopen("https://www.okx.com/api/v5/market/books?instId=BTC-USDT").read().decode('utf-8'))
Log(ticker)
void main() {
auto info = json::parse(HttpQuery("https://www.okx.com/api/v5/public/time"));
Log(info);
auto ticker = json::parse(HttpQuery("https://www.okx.com/api/v5/market/books?instId=BTC-USDT"));
Log(ticker);
}
访问OKX公开行情API接口的示例。
“`javascript
function main() {
// 本次设置代理并发送HTTP请求,无用户名、无密码,此次HTTP请求将通过代理发送
HttpQuery(“socks5://127.0.0.1:8889/http://www.baidu.com/”)
// 本次设置代理并发送HTTP请求,包含用户名和密码,仅对当前HttpQuery调用生效,后续调用HttpQuery("http://www.baidu.com")将不会使用代理
HttpQuery("socks5://username:[email protected]:8889/http://www.baidu.com/")
}
python
void main() {
HttpQuery("socks5://127.0.0.1:8889/http://www.baidu.com/");
HttpQuery("socks5://username:[email protected]:8889/http://www.baidu.com/");
}
HttpQuery函数使用代理设置的示例。
HttpQuery()函数仅支持JavaScript、C++语言,Python语言可以使用urllib库直接发送HTTP请求。HttpQuery()主要用于访问交易所不需要签名的接口,例如行情信息等公共接口。
回测系统中可以使用HttpQuery()发送请求(仅支持GET请求)获取数据。回测时限制访问不同的URL最多20次,并且HttpQuery()访问会缓存数据,相同的URL第二次访问时HttpQuery()函数返回缓存数据,不再发起实际的网络请求。
{@fun/Global/HttpQuery_Go HttpQuery_Go}