跳至主内容

API使用示例

以下API使用示例使用了以下生成的API密钥: UjlMS+0m1l9IUZjpjWyJG8gbnv2Mta4T .

C#示例

在以下示例中,我们将使用C#创建一个公司。

/** 此示例使用了json-rpc-csharp项目:
 *  https://github.com/adamashton/json-rpc-csharp
 *

String apiURL =
  "https://cloud.gravityzone.bitdefender.com/api/v1.0/jsonrpc/";

// 向公司API发起请求
Client rpcClient = new Client(apiURL + "companies");
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["type"] = 1;
parameters["name"] = "测试公司";
parameters["address"] = @"虚构街道23号,
  隐藏小镇, 隐形之地";
parameters["phone"] = "+99000000000";
parameters["canBeManagedByAbove"] = true;

Request request = rpcClient.NewRequest(
  "createCompany", parameters);

Response response = rpcClient.Rpc(request);

if (response.Result != null) {
    JToken result = response.Result;
    Console.WriteLine(response.ToString());
}

// 输出:
// 54b646a0b1a43dbd197b23c6

curl示例

在以下示例中,我们使用curl获取所有托管公司的信息。

curl -i \
-H "Authorization: \
Basic VWpsTVMrMG0xbDlJVVpqcGpXeUpHOGdibnYyTXRhNFQ6" \
-H "Content-Type: application/json" \
-d '{"id": "123456789", "jsonrpc": "2.0",
"method": "getCompaniesList", "params": []}' \
-X POST \
https://cloud.gravityzone.bitdefender.com/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":"54b646a0b1a43dbd197b23c6","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安装request模块
var request = require('request');

request({
  uri: "https://cloud.gravityzone.bitdefender.com/ \
    api/v1.0/jsonrpc/companies",
  method: "POST",
  headers: {
    'Authorization':
      "Basic VWpsTVMrMG0xbDlJVVpqcGpXeUpHOGdibnYyTXRhNFQ6"
  },
  json: {
    "id": "123456789",
    "jsonrpc": "2.0",
    "method": "getCompanyDetails",
    "params": [
  "companyId": "54b646a0b1a43dbd197b23c6"
 ]
  }
}, function(response, body) {
  console.log(body);});

// 输出结果:

// { id: '123456789', jsonrpc: '2.0',
//  result: { 
//  id: '54b646a0b1a43dbd197b23c6',
//  isSuspended: False,
//   name: '测试公司',
//  phone: '+9900000000',
//  address: '幻想街23号,梦幻城,理想国',
//  canBeManagedByAbove: True,
//  type: 1} }

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"


'请根据request_data中使用的方法替换api_endpoint字符串。
'详情请参阅本指南"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}