El SDK de Java proporcionado por Alibaba Cloud simplifica el proceso de invocación de las API de DataService Studio y facilita la recuperación de datos específicos. Puede integrar el SDK en su proyecto mediante dependencias de Maven o descargar el paquete de instalación para una configuración local. Este tema muestra cómo utilizar el SDK de Java para invocar la API de métricas predefinidas, e incluye el método y un ejemplo.
Requisitos previos
Para invocar la API de métricas predefinidas, asegúrese de que el producto y el dispositivo estén creados, y de que la copia de seguridad de los datos se haya completado. Para obtener instrucciones detalladas, consulte Preset Metrics API.
Para invocar la API de datos del producto o personalizar una API de servicio, asegúrese de que la API correspondiente esté creada. Para obtener instrucciones detalladas, consulte Product data APIs y Customize Service API.
Para obtener más información, consulte Management and Usage.
Instalación del SDK
-
Configure un entorno de desarrollo de Java.
Descargue el entorno desde el sitio web oficial de Java y siga las instrucciones proporcionadas para la instalación.
-
Instale el IoT Platform SDK para Java.
Obtenga el software Maven desde el sitio web oficial de Apache Maven.
-
Incorpore el IoT Platform SDK para Java mediante las siguientes dependencias de 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>
Inicio de una solicitud
A continuación se muestra un fragmento de código de ejemplo para invocar las estadísticas históricas de recuento de dispositivos desde la API de métricas predefinidas en DataService Studio. Modifique el código según sea necesario con base en las descripciones de los parámetros para invocar la API deseada.
El máximo de solicitudes por segundo (QPS) para una sola cuenta de Alibaba Cloud al invocar la API de DataService Studio es de 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 solicitud del sistema:
Nombre
Tipo
Obligatorio
Valor de ejemplo
Descripción
accessKeyId
String
Sí
LTAI
Para obtener el AccessKey ID y el AccessKey Secret, inicie sesión en la consola de IoT Platform, pase el cursor sobre la imagen de perfil de la cuenta y haga clic en Accesskey Management.
NotaSi utiliza un usuario RAM, adjunte la política de permisos AliyunIOTFullAccess para habilitar la gestión de recursos de IoT Platform. De lo contrario, la conexión a IoT Platform podría fallar. Para conocer el método de autorización, consulte Grant RAM Users Access to IoT Platform.
accessKeySecret
String
Sí
yourAccessKeySecret
Endpoint
String
Sí
iot.cn-shanghai.aliyuncs.com
La dirección del servidor de la API del servicio de Alibaba Cloud. Asegúrese de que la región coincida con la del producto de IoT Platform.
En este ejemplo, la región es China (Shanghai) (cn-shanghai).
apiPath
String
Sí
/iot-cn-npk1v/system/query/hist_dev_cnt_stat
La ruta de operación de la API. En la lista de API de DataService Studio, haga clic en View junto a la API para acceder a su página de producto y encontrar el valor de API Path. Para obtener más detalles, consulte Manage API.
iotInstanceId
String
Sí
iot-cn-npk1u
El ID de la instancia que aloja la API.
pageNum
Integer
Condicional
1
El número de página para la paginación.
pageSize
Integer
Condicional
100
El número de entradas por página, hasta un máximo de 100.
-
Parámetros de solicitud relacionados con el negocio:
Nombre
Tipo
Obligatorio
Descripción
Código relacionado
fieldName
String
Sí
El nombre del parámetro en la solicitud.
condition.setFieldName("entityId");operate
String
Sí
El operador utilizado para el parámetro. Las opciones incluyen:
=para coincidencia exacta de valor.BETWEENpara un rango de valores.INpara varios valores posibles.!=para exclusión de un valor específico.
condition.setOperate("=");value
String
No
El valor que se debe coincidir para el parámetro.
ImportanteEste parámetro es necesario a menos que el operador sea
BETWEEN.condition.setValue("all");betweenStart
String
No
El valor inicial para un parámetro de rango.
ImportanteObligatorio cuando el operador es
BETWEEN.condition.setBetweenStart("0");betweenEnd
String
No
El valor final para un parámetro de rango.
ImportanteObligatorio cuando el operador es
BETWEEN.condition.setBetweenEnd("100");Cada parámetro de solicitud está asociado con una
conditionespecífica. Para configurar estas condiciones, consulte la página de producto de la API, donde puede ver y establecer el número deseado decondition. Para obtener orientación sobre cómo acceder a los parámetros de solicitud de la API, consulte Manage API.En el código de ejemplo proporcionado, la API tiene tres parámetros de solicitud: __instance_id__, entityId y statDate, que corresponden a
condition,condition1ycondition2, respectivamente.
Resultado de la ejecución
-
Éxito:
Las descripciones detalladas de los parámetros devueltos se encuentran en la página de producto de la API correspondiente. Para operaciones específicas, consulte Management and Usage.
El siguiente ejemplo ilustra la respuesta exitosa de la API, que incluye estadísticas sobre el número de dispositivos para la instancia pública desde el 21 de febrero de 2021 hasta el momento de la invocación de la API.
{ "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" } } -
Error:
Es posible determinar la razón del error al examinar el código de error en el resultado.
El siguiente ejemplo muestra una invocación de API con errores debido a un parámetro de solicitud no válido,
__instance_idd__. Corríjalo a__instance_id__y reintente la solicitud.