【问题标题】:Android Management - How to send bulk request?Android 管理 - 如何发送批量请求?
【发布时间】:2020-04-29 12:32:48
【问题描述】:

我们一直在使用 Android 管理 API 在企业中注册设备并向我们的用户提供受限环境。我们有一个要求,我们需要通过使用此 API 发出补丁请求来批量更新所有设备:https://developers.google.com/android/management/reference/rest/v1/enterprises.devices/patch

我正在寻找的是,不是以任意方式逐个发送请求,有什么方法可以发送批量请求并在所有设备更新时接收响应?

注意:我已经知道该怎么做。

帮助感谢,谢谢。

【问题讨论】:

    标签: 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 的更多详细信息。

    【讨论】:

      【解决方案3】:

      "您可以在AndroidEnterprise 上使用batch() 调用,并通过调用BatchRequest.execute() 来执行批量请求。 请注意,单个批处理请求中的调用次数限制为 1000 个,因此如果您需要进行更多调用,请使用多个批处理请求。

      您可以参考以下格式:EMM API batch format。 附上一个例子:EMM API batch example。”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-22
        • 2017-12-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多