O SDK para Java da Alibaba Cloud simplifica a chamada de APIs do DataService Studio e facilita a recuperação de dados específicos. Integre o SDK ao seu projeto por meio de dependências Maven ou baixe o pacote de instalação para configuração local. Este tópico demonstra como usar o SDK para Java para chamar a API de métricas predefinidas, incluindo o método e um exemplo prático.
Pré-requisitos
Para chamar a API de métricas predefinidas, verifique se o produto e o dispositivo foram criados e se o backup de dados está concluído. Para obter instruções detalhadas, consulte API de métricas predefinidas.
Para chamar a API de dados do produto ou personalizar uma API de serviço, confirme que a API correspondente já foi criada. Para obter instruções detalhadas, consulte APIs de dados do produto e Personalizar API de serviço.
Para mais informações, consulte Gerenciamento e uso.
Instale o SDK
-
Configure um ambiente de desenvolvimento Java.
Baixe o ambiente no site oficial do Java e siga as instruções de instalação.
-
Instale o IoT Platform SDK para Java.
Obtenha o software Maven no site oficial do Apache Maven.
-
Adicione o IoT Platform SDK para Java usando as seguintes dependências Maven:
<dependency> <groupId>com.aliyun</groupId> <artifactId>tea-openapi</artifactId> <version>0.0.11</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>iot20180120</artifactId> <version>1.1.0</version> </dependency>
Iniciar uma solicitação
O trecho de código abaixo exemplifica a invocação das estatísticas históricas de contagem de dispositivos da API de métricas predefinidas no DataService Studio. Modifique o código conforme necessário, com base nas descrições dos parâmetros, para chamar a API desejada.
O limite máximo de solicitações por segundo (QPS) para uma única conta Alibaba Cloud ao chamar a API do DataService Studio é 100.
// Sample code for calling the DataService Studio API
import com.aliyun.iot20180120.Client;
import com.aliyun.iot20180120.models. * ;
import com.aliyun.teaopenapi.models.Config;
public class JavaDemo {
/**
* Initialize the client with AccessKey ID and AccessKey Secret
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
public static Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
Config config = new Config();
config.setAccessKeyId(accessKeyId);
config.setAccessKeySecret(accessKeySecret);
// Set your access domain name
config.setEndpoint("iot.cn-shanghai.aliyuncs.com");
return new Client(config);
}
public static void main(String[] args_) throws Exception {
// Provide your AccessKey ID and AccessKey Secret
Client client = JavaDemo.createClient("LTAI****************", "*********"));
ListAnalyticsDataRequest request = new ListAnalyticsDataRequest();
// Specify your API Path
request.setApiPath("/iot-cn-npk1v******/system/query/hist_dev_cnt_stat");
// Indicate the instance ID where your API is located
request.setIotInstanceId("iot-cn-npk1v******");
// Set paging parameters: page number
request.setPageNum(1);
// Set paging parameters: page size
request.setPageSize(100);
List < ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition > conditions = new ArrayList < >();
// Define your business-related request parameters. For Condition configuration, refer to the description below.
ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition condition = new ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition();
condition.setFieldName("__instance_id__");
condition.setOperate("=");
condition.setValue("iot-public");
conditions.add(condition);
ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition condition1 = new ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition();
condition1.setFieldName("entityId");
condition1.setOperate("=");
condition1.setValue("all");
conditions.add(condition1);
ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition condition2 = new ListAnalyticsDataRequest.ListAnalyticsDataRequestCondition();
condition2.setFieldName("statDate");
condition2.setOperate("=");
condition2.setValue("20210221");
conditions.add(condition2);
request.setCondition(conditions);
// Execute the API call and capture the response
ListAnalyticsDataResponse listAnalyticsDataResponse = client.listAnalyticsData(request);
// Output the response
System.out.println(JSON.toJSONString(listAnalyticsDataResponse));
}
}
-
Parâmetros de solicitação do sistema:
Nome
Tipo
Obrigatório
Valor de exemplo
Descrição
accessKeyId
String
Sim
LTAI
Para obter o AccessKey ID e o AccessKey Secret, faça login no console do IoT Platform, passe o mouse sobre a foto do perfil da conta e clique em Accesskey Management.
NotaSe estiver usando um usuário RAM, anexe a política de permissão AliyunIOTFullAccess para ative o gerenciamento de recursos do IoT Platform. Caso contrário, a conexão com o IoT Platform pode falhar. Para saber mais sobre o método de autorização, consulte Conceder acesso de usuários RAM ao IoT Platform.
accessKeySecret
String
Sim
yourAccessKeySecret
Endpoint
String
Sim
iot.cn-shanghai.aliyuncs.com
Endereço do servidor da API de serviço da Alibaba Cloud. Verifique se a região corresponde à do produto IoT Platform.
Neste exemplo, a região é China (Shanghai) (cn-shanghai).
apiPath
String
Sim
/iot-cn-npk1v/system/query/hist_dev_cnt_stat
Caminho de operação da API. Na lista de APIs do DataService Studio, clique em View ao lado da API para acessar sua página de produto e encontrar o valor de API Path. Para mais detalhes, consulte Gerencie API.
iotInstanceId
String
Sim
iot-cn-npk1u
ID da instância que hospeda a API.
pageNum
Integer
Condicional
1
Número da página para paginação.
pageSize
Integer
Condicional
100
Quantidade de entradas por página, com limite máximo de 100.
-
Parâmetros de solicitação de negócio:
Nome
Tipo
Obrigatório
Descrição
Código relacionado
fieldName
String
Sim
Nome do parâmetro na solicitação.
condition.setFieldName("entityId");operate
String
Sim
Operador usado para o parâmetro. As opções incluem:
=para correspondência exata de valor.BETWEENpara um intervalo de valores.INpara múltiplos valores possíveis.!=para exclusão de um valor específico.
condition.setOperate("=");value
String
Não
Valor a ser correspondido para o parâmetro.
ImportanteEste parâmetro é necessário, a menos que o operador seja
BETWEEN.condition.setValue("all");betweenStart
String
Não
Valor inicial para um parâmetro de intervalo.
ImportanteObrigatório quando o operador é
BETWEEN.condition.setBetweenStart("0");betweenEnd
String
Não
Valor final para um parâmetro de intervalo.
ImportanteObrigatório quando o operador é
BETWEEN.condition.setBetweenEnd("100");Cada parâmetro de solicitação está associado a uma
conditionespecífica. Para configurar essas condições, consulte a página de produto da API, onde é possível visualizar e defina a quantidade desejada decondition. Para orientações sobre como acessar os parâmetros de solicitação da API, consulte Gerencie API.No código de exemplo fornecido, a API possui três parâmetros de solicitação: __instance_id__, entityId e statDate, que correspondem a
condition,condition1econdition2, respectivamente.
Resultado da execução
-
Sucesso:
As descrições detalhadas dos parâmetros retornados estão disponíveis na página de produto da API correspondente. Para operações específicas, consulte Gerenciamento e uso.
O exemplo abaixo ilustra uma resposta bem-sucedida da API, contendo estatísticas sobre o número de dispositivos da instância pública de 21 de fevereiro de 2021 até o momento da chamada.
{ "body": { "data": { "hasNext": false, "pageNum": 1, "pageSize": 100, "resultJson": "[{\"statDate\":\"20210221\",\"actDevCnt\":2942,\"onlineDevCntCompare\":0.00,\"livelyDevCntCompare\":8.99,\"livelyDevCnt\":1527,\"onlineDevRate\":23.08,\"crtDevCnt\":169025,\"livelyDevRate\":51.90,\"crtDevCntCompare\":0.08,\"onlineDevCnt\":679,\"actDevRate\":1.74,\"actDevCntCompare\":4.55}]" }, "requestId": "6B78B8DB-EBDB-4451-BE30-893714******", "success": true }, "headers": { "access-control-allow-origin": "*", "date": "Mon, 15 Mar 2021 07:24:01 GMT", "content-length": "425", "access-control-max-age": "172800", "x-acs-request-id": "6B78B8DB-EBDB-4451-BE30-893714******", "access-control-allow-headers": "X-Requested-With, X-Sequence, _aop_secret, _aop_signature", "connection": "keep-alive", "content-type": "application/json;charset=utf-8", "access-control-allow-methods": "POST, GET, OPTIONS" } } -
Falha:
Examine o código de erro no resultado para identificar o motivo da falha.
O exemplo abaixo mostra uma chamada de API malsucedida devido a um parâmetro de solicitação inválido:
__instance_idd__. Corrija-o para__instance_id__e tente novamente.