API使用示例
以下API使用示例使用了以下生成的API密钥:
UjlMS+0m1l9IUZjpjWyJG8gbnv2Mta4T
.
C#示例
在以下示例中,我们使用C#列出指定容器中的终端。
/** 此示例使用了json-rpc-csharp项目:
* https://github.com/adamashton/json-rpc-csharp
*/
String apiURL =
"https://
{域名}
/api/v1.0/jsonrpc/";
// 向公司API发起请求
Client rpcClient = new Client(apiURL + "network");
String apiKey = "UjlMS+0m1l9IUZjpjWyJG8gbnv2Mta4T";
String userPassString = apiKey + ":";
String authorizationHeader = System.Convert.ToBase64String(
System.Text.Encoding.UTF8.GetBytes(userPassString));
rpcClient.Headers.Add("Authorization",
"Basic " + authorizationHeader);
JToken parameters = new JObject();
parameters["parentId"] = "55d43258b1a43ddf107baad4";
parameters["isManaged"] = True;
parameters["page"] = 1;
parameters["perPage"] = 2;
Request request = rpcClient.NewRequest(
"getEndpointsList", parameters);
Response response = rpcClient.Rpc(request);
if (response.Result != null)
{
JToken result = response.Result;
Console.WriteLine(response.ToString());
}
curl示例
在以下示例中,我们使用网络API获取自定义组列表。
curl -i \
-H "Authorization: \
Basic VWpsTVMrMG0xbDlJVVpqcGpXeUpHOGdibnYyTXRhNFQ6" \
-H "Content-Type: application/json" \
-d '{"id": "123456789", "jsonrpc": "2.0",
"method": "getCustomGroupsList", "params": \
{"parentId" : '5582c0acb1a43d9f7f7b23c6'}}' \
-X POST \
https://{domain}/api/v1.0/jsonrpc/network
HTTP/1.1 200 OK
Date: Wed, 10 Jan 2015 13:25:30 GMT
Content-Length: 103
Content-Type: application/json; charset=utf-8
{"id":"123456789","jsonrpc":"2.0","result":
[{'id': '5582c385b1a43deb7f7b23c6', 'name': '第一组'},
{'id': '5582d3b3b1a43d897f7b23c8', 'name': '第二组'}]}
Python示例
现在,我们将请求获取终端列表。
针对Python 2.7
#非欧盟地区
import base64
import requests
import json
apiKey = "UjlMS+0m1l9IUZjpjWyJG8gbnv2Mta4T"
encodedUserPassSequence = base64.b64encode(apiKey + ":")
authorizationHeader = "Basic " + encodedUserPassSequence
apiEndpoint_Url = "https://cloud.gravityzone.bitdefender.com/api/v1.0/jsonrpc/network"
request = '{"params": {},"jsonrpc": "2.0","method": "getEndpointsList","id": "301f7b05-ec02-481b-9ed6-c07b97de2b7b"}'
result = requests.post(apiEndpoint_Url,data=request,verify=False,headers= {"Content-Type":"application/json","Authorization":authorizationHeader})
print(result.json())
#欧盟地区
import base64
import requests
import json
apiKey = "UjlMS+0m1l9IUZjpjWyJG8gbnv2Mta4T"
encodedUserPassSequence = base64.b64encode(apiKey + ":")
authorizationHeader = "Basic " + encodedUserPassSequence
apiEndpoint_Url = "https://cloudgz.gravityzone.bitdefender.com/api/v1.0/jsonrpc/network"
request = '{"params": {},"jsonrpc": "2.0","method": "getEndpointsList","id": "301f7b05-ec02-481b-9ed6-c07b97de2b7b"}'
result = requests.post(apiEndpoint_Url,data=request,verify=False,headers= {"Content-Type":"application/json","Authorization":authorizationHeader})
print(result.json())
针对Python 3
#非欧盟地区
import base64
import requests
import json
apiKey = "UjlMS+0m1l9IUZjpjWyJG8gbnv2Mta4T"
loginString = apiKey + ":"
encodedBytes = base64.b64encode(loginString.encode())
encodedUserPassSequence = str(encodedBytes,'utf-8')
authorizationHeader = "Basic " + encodedUserPassSequence
apiEndpoint_Url = "https://cloud.gravityzone.bitdefender.com/api/v1.0/jsonrpc/network"
request = '{"params": {},"jsonrpc": "2.0","method": "getEndpointsList","id": "301f7b05-ec02-481b-9ed6-c07b97de2b7b"}'
result = requests.post(apiEndpoint_Url,data=request,verify=False,headers= {"Content-Type":"application/json","Authorization":authorizationHeader})
print(result.json())
#欧盟地区代码
import base64
import requests
import json
apiKey = "UjlMS+0m1l9IUZjpjWyJG8gbnv2Mta4T"
loginString = apiKey + ":"
encodedBytes = base64.b64encode(loginString.encode())
encodedUserPassSequence = str(encodedBytes,'utf-8')
authorizationHeader = "Basic " + encodedUserPassSequence
apiEndpoint_Url = "https://cloudgz.gravityzone.bitdefender.com/api/v1.0/jsonrpc/network"
request = '{"params": {},"jsonrpc": "2.0","method": "getEndpointsList","id": "301f7b05-ec02-481b-9ed6-c07b97de2b7b"}'
result = requests.post(apiEndpoint_Url,data=request,verify=False,headers= {"Content-Type":"application/json","Authorization":authorizationHeader})
print(result.json())
Node.js示例
本例将执行与之前完全相同的调用,但改用Node.js实现
// 使用request模块:
// npm install request
var request = require('request');
request({
uri: "https://{domain}/ \
api/v1.0/jsonrpc/packages",
method: "POST",
headers: {
'Authorization':
"Basic VWpsTVMrMG0xbDlJVVpqcGpXeUpHOGdibnYyTXRhNFQ6"
},
json: {
"id": "123456789",
"jsonrpc": "2.0",
"method": "getPackagesList",
"params": []
}
}, function(response, body) {
console.log(body);
});
// 输出结果:
// {'jsonrpc': '2.0',
// 'id': '61f4dadc-bd10-448d-af35-16d45a188d9e',
// 'result': {
// 'items': [
// {'type': 3, 'id': '55d4325cb1a43ddf107b241b',
// 'name': '默认安全服务器套件'},
// {'type': 4, 'id': '55d43e34b1a43db5187b23c6',
// 'name': '我的套件'}]
// , 'total': 2,
// 'page': 1,
// 'perPage': 30,
// 'pagesCount': 0}
// }
PowerShell示例
这是一个PowerShell脚本示例,提供了调用 GravityZone API接口的基础方法。
注意
出于教学目的,本脚本中的操作步骤均采用显式编写。您可根据实际使用场景自行优化。
# 存储API令牌(请替换为您的API密钥)
# 详情请参阅本指南的"API密钥"章节
$api_key = 'UjlMS+0m1l9IUZjpjWyJG8gbnv2Mta4T'
# 构建登录字符串(密码为空字符串)
$user = $api_key
$pass = ""
$login = $user + ":" + $pass
# 将登录字符串编码为base64
$bytes= [System.Text.Encoding]::UTF8.GetBytes($login)
$encodedlogin=[Convert]::ToBase64String($bytes)
# 在编码后的登录字符串前添加"Basic "前缀
# 以获取认证头
$authheader = "Basic " +
$encodedlogin
# 将base_uri字符串替换为适用于您控制台的正确地址
$base_uri = "https://cloud.gravityzone.bitdefender.com/api"
# 将api_endpoint字符串替换为适用于
# request_data中所用方法的正确端点
# 详情请参阅本指南的"API请求"章节
$api_endpoint = "/v1.0/jsonrpc/network"# 构建请求URI
$request_uri = $base_uri + $api_endpoint
# 将请求体存储在JSON变量中
# 定义API调用方法及其参数
# 有关各API方法的更多详情,请参阅本指南的"参考"章节
$request_data = '{
"id":"123456789",
"jsonrpc":"2.0",
"method":"getEndpointsList",
"params":
{
"page":1,
"perPage":3
}
}'
# 所有必需资源现已设置完成
# 您有两种进行API调用的选择
# 第一种选择:
# 将所有调用参数整合到一个结构中,然后使用
# Invoke-RestMethod进行调用
$params = @{
Uri = $request_uri
Headers = @{
'Authorization' = "$authheader"
'Content-Type' = "application/json"
}
Method = 'POST'
Body = $request_data
ContentType = 'application/json'}
$response = Invoke-RestMethod @params
# 第二种选择:
# 构建头部结构,但以内联方式指定
# Invoke-RestMethod参数
$headers = New-Object `
"System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization",
$authheader)
$headers.Add("Content-Type","application/json")
$response2 = Invoke-RestMethod -Uri $request_uri `
-Headers $headers -ContentType 'application/json' `
-Method Post -Body $request_data
# 随机示例展示如何从$response和$response2变量中
# 访问/显示获取的调用结果
Write-Output '$response'
Write-Output "~~~~~~~~~~~~~~~~~~~~~~~~~~~"
$response
Write-Output '$response |ConvertTo-Json'
Write-Output "~~~~~~~~~~~~~~~~~~~~~~~~~~~"
$response |ConvertTo-Json
Write-Output '$response.result | ConvertTo-Json'
Write-Output "~~~~~~~~~~~~~~~~~~~~~~~~~~~
"$response.result | ConvertTo-Json
Write-Output '$response.result.items |ConvertTo-Json'
Write-Output "~~~~~~~~~~~~~~~~~~~~~~~~~~~"
$response.result.items |ConvertTo-Json
Write-Output '$response2'
Write-Output "~~~~~~~~~~~~~~~~~~~~~~~~~~~"
$response2
Write-Output '$response2.result'
Write-Output "~~~~~~~~~~~~~~~~~~~~~~~~~~~"
$response2.result
Write-Output '$response2.result.items'
Write-Output "~~~~~~~~~~~~~~~~~~~~~~~~~~~"
$response2.result.items
Write-Output '$response2.result.items.id[0]'
Write-Output "~~~~~~~~~~~~~~~~~~~~~~~~~~~"
$response2.result.items.id[0]
Write-Output '$response2.result.items.name[1]'
Write-Output "~~~~~~~~~~~~~~~~~~~~~~~~~~~"
$response2.result.items.name[1]
Write-Output '$response2.result.items[1] |ConvertTo-Json'
Write-Output "~~~~~~~~~~~~~~~~~~~~~~~~~~~"
$response2.result.items[1] |ConvertTo-Json
VBScript示例
这是一个VBScript示例。它提供了向 GravityZone API端点发起调用的基础方法。
注意
我们在此脚本中明确编写了这些操作以用于教学目的。您可以根据实际使用场景自由优化它们。
{{'以下代码用于显示调用结果。
Set fso = CreateObject ("Scripting.FileSystemObject")
Set stdout = fso.GetStandardStream (1)
Set stderr = fso.GetStandardStream (2)
'以下是用于Base64编码授权头的辅助函数
Private Function Stream_StringToBinary(Text)
Const adTypeText = 2
Const adTypeBinary = 1
Dim BinaryStream 'As New Stream
Set BinaryStream = CreateObject("ADODB.Stream")
BinaryStream.Type = adTypeText
BinaryStream.CharSet = "us-ascii"
BinaryStream.Open
BinaryStream.WriteText Text
BinaryStream.Position = 0
BinaryStream.Type = adTypeBinary
BinaryStream.Position = 0
Stream_StringToBinary = BinaryStream.Read
Set BinaryStream = Nothing
End Function
Function Base64Encode(sText)
Dim oXML, oNode
Set oXML = CreateObject("Msxml2.DOMDocument.3.0")
Set oNode = oXML.CreateElement("base64")
oNode.dataType = "bin.base64"
oNode.nodeTypedValue = Stream_StringToBinary(sText)
Base64Encode = Replace(oNode.text, chr(10), "")
Set oNode = Nothing
Set oXML = Nothing
End Function
'存储API令牌
'请将字符串替换为实际API密钥
'更多信息请参阅本指南"API密钥"章节
api_key = "UjlMS+0m1l9IUZjpjWyJG8gbnv2Mta4T"
'构建登录字符串
'注意:密码为空字符串
user = api_key
pass = ""
login = user & ":" & pass
'将登录字符串编码为Base64
encodedlogin = Base64Encode(login)
'在编码后的登录字符串前添加"Basic "以获取认证头
authheader = "Basic " & encodedlogin
'将base_uri字符串替换为您控制台对应的正确地址
base_uri = "https://cloud.gravityzone.bitdefender.com/api"
'将api_endpoint字符串替换为与request_data中方法对应的正确端点
'详情请参阅本指南"API请求"章节
api_endpoint = "/v1.0/jsonrpc/network"
'构建请求URI
request_uri = base_uri & api_endpoint
'创建请求体
'定义API调用方法及其参数
'更多信息请参阅本指南"参考"章节
'注意:由于页面宽度限制,strJSONRequest字符串
'分为多行显示,实际使用时需合并为一行
strJSONRequest = "{""id"":""123456789"",
""jsonrpc"":""2.0"",
""method"":""getEndpointsList"",
""params"":{""page"":1,""perPage"":3}}"
'所有必需资源已设置
'执行API调用
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
objHTTP.Open "POST", request_uri, False
objHTTP.setRequestHeader "Authorization", authheader
objHTTP.setRequestHeader "Content-Type", "application/json"
objHTTP.send (strJSONRequest)
'调用响应显示示例:
stdout.WriteLine "响应代码: " & objHTTP.status
stdout.WriteLine "响应头: " & objHTTP.getAllResponseHeaders
stdout.WriteLine "响应数据: " & objHTTP.ResponseText}