PageSpeed ​​API — Пакетная обработка на Java

Я использую PageSpeed ​​API в своем Java-приложении. Он работает нормально, но, поскольку мне нужно проверить много URL-адресов, мне нужно будет выполнить пакетную обработку. Я искал в Интернете и в их документации, но я не могу найти ничего о том, как это сделать. Кто-нибудь знает?

Я подключаюсь с помощью обычного HTTP-запроса, потому что это оказалось быстрее, чем использование их пакета, но я предполагаю, что для пакетной обработки, возможно, их пакет лучше, поэтому вот код, который я использую для обоих сценариев:

HTTP-запрос:

String call = "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url = " + SITE + "&key = " + GOOGLE_KEY + "&strategy = " + DEVICE;

URL url = new URL(call);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");

BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;

while ((inputLine = in.readLine()) != null) {
    response.append(inputLine);
}
in.close();

JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(response.toString());

Java-пакет PageSpeed:

JsonFactory jsonFactory = new JacksonFactory();
HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
HttpRequestInitializer httpRequestInitializer = new HttpRequestInitializer() {
    @Override
    public void initialize(HttpRequest httpRequest) throws IOException {
        httpRequest.setReadTimeout(60000); // 60 seconds
    }
};

Pagespeedonline p = new Pagespeedonline.Builder(transport, jsonFactory, httpRequestInitializer).setApplicationName("APP_NAME").build();
Pagespeedonline.Pagespeedapi.Runpagespeed runpagespeed = p.pagespeedapi().runpagespeed(SITE).setKey(GOOGLE_KEY).setStrategy(DEVICE);
PagespeedApiPagespeedResponseV5 response = runpagespeed.execute();

Оба работают нормально, мне просто нужно знать, как интегрировать пакетную обработку в любой из двух.

Может кто-нибудь помочь мне?

Большое спасибо!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
120
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У меня получилось, но я забыл поделиться, вот оно:

JsonFactory jsonFactory = new JacksonFactory();
HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
HttpRequestInitializer httpRequestInitializer = new HttpRequestInitializer() {
   @Override
   public void initialize(HttpRequest httpRequest) throws IOException {
        httpRequest.setReadTimeout(60000); // 60 seconds
    }
};

BatchRequest batch = p.batch(httpRequestInitializer);
Pagespeedonline p = new Pagespeedonline.Builder(transport, jsonFactory, httpRequestInitializer).setApplicationName(APP_NAME).build();

//Loop to add as many as you want
for (int i = 0; i < urls.size(); ++i) {
    Pagespeedonline.Pagespeedapi.Runpagespeed check = p.pagespeedapi().runpagespeed(urls.get(i)).setKey(GOOGLE_KEY).setStrategy(DEVICE);
    check.queue(batch, callback);
}

batch.execute();

И это обратный вызов:

JsonBatchCallback<PagespeedApiPagespeedResponseV5> callback = new JsonBatchCallback<PagespeedApiPagespeedResponseV5>() {

    public void onSuccess(PagespeedApiPagespeedResponseV5 response, HttpHeaders responseHeaders) {
        //ON SUCCESS
    }
    public void onFailure(GoogleJsonError e, HttpHeaders responseHeaders) {
        //ON FAILURE
    }
};

Другие вопросы по теме