PageSpeed ​​API - Пакетирование в Java - PullRequest
0 голосов
/ 18 июня 2019

Я использую API PageSpeed ​​в своем приложении 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());

Пакет PageSpeed ​​Java:

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();

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

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

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

1 Ответ

0 голосов
/ 16 июля 2019

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

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
    }
};
...