【问题标题】:Android Management - How to send bulk request?Android 管理 - 如何发送批量请求?
【发布时间】:2020-04-29 12:32:48
【问题描述】:
【问题讨论】:
标签:
android-management-api
android-managed-profile
【解决方案1】:
使用AndroidManagement.batch() API 将多个请求排队等待执行并减少客户端建立的连接。现已弃用的 Google EMM API documentation 包含有关此的更多信息。
这是一个关于如何创建批处理请求、排队设备补丁调用并随后执行请求的伪示例。
AndroidManagement amapi;
var batchRequest = amapi.batch();
amapi.enterprises().devices().patch(deviceName, content).queue(batchRequest, new JsonBatchCallback<>() {
@Override
public void onFailure(GoogleJsonError e, HttpHeaders responseHeaders) throws IOException {
}
@Override
public void onSuccess(com.google.api.services.androidmanagement.v1.model.Device device, HttpHeaders responseHeaders) throws IOException {
updateDevice(device);
}
});
// queue another device patch request...
// execute all queued requests
batchRequest.execute();
请注意,如果您想进行批量更新以保存在API usage limit 上,这对您没有帮助。当涉及到限制时,您的批次中的所有请求都将单独计算。没有办法解决这个问题。
【解决方案2】:
您能否提供更多有关您要实现的目标的背景信息?也许你想做的事情可以通过一个策略来实现。例如,要在多台设备上安装应用程序,您可以将相同的策略应用于这些设备,然后将这些行添加到策略中:
"applications": [
{
"packageName": "com.google.samples.apps.iosched",
"installType": "FORCE_INSTALLED"
}
]
关于批处理请求,这里有一个示例代码,说明如何在 Android Management API 中执行批处理请求。
def list_devices(request_id, response, exception):
"""Do something with the devices list response."""
if exception is not None:
# Do something with the exception.
pass
else:
# Do something with the response.
pass
get_device1 = androidmanagement.enterprises().devices().get(name=deviceName)
get_device2 = androidmanagement.enterprises().devices().get(name=deviceName)
batch = androidmanagement.new_batch_http_request();
batch.add(get_device1, list_devices)
batch.add(get_device2, list_devices)
batch.execute()
您也可以查看link 了解有关 new_batch_http_request 的更多详细信息。