Oracle HTTP If-None-Match return ETag + Последнее изменение - PullRequest
0 голосов
/ 05 декабря 2018

В настоящее время я обращаюсь к веб-сайту oracle с просьбой загрузить java из моего приложения, и я проверяю, обновляется ли мой локальный файл с помощью тега If-None-Match, отправляющего ETag локального файла.Сервер возвращает мне ETag в этом формате: "acd45017cd055c797a331b2f0652d293: 1539062148.210488", который является etag: last-Modified.

В этом случае сервер должен вернуть 304, но он всегда возвращает 200, потому что мой локальный ETag "acd450173d0b2b2cне совпадает с сервером ETag "acd45017cd055c797a331b2f0652d293: 1539062148.210488"

protected HttpURLConnection makeConnection(URL url) throws IOException {
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();

    connection.setUseCaches(false);
    connection.setDefaultUseCaches(false);
    if (!shouldIgnoreLocal() && getTarget().isFile())
        connection.setRequestProperty("If-None-Match", getDigest(getTarget(), "MD5", 32));
    connection.setRequestProperty("Cookie", "oraclelicense=accept-securebackup-cookie");
    connection.setRequestProperty("Cache-Control", "no-store,max-age=0,no-cache");
    connection.setRequestProperty("Expires", "0");
    connection.setRequestProperty("Pragma", "no-cache");
    connection.setConnectTimeout(5000);
    connection.setReadTimeout(30000);
    int status = connection.getResponseCode();
    while (status != HttpURLConnection.HTTP_OK && (status == HttpURLConnection.HTTP_MOVED_TEMP || status == HttpURLConnection.HTTP_MOVED_PERM || status == HttpURLConnection.HTTP_SEE_OTHER)) {
        String newUrl = connection.getHeaderField("Location");
        connection = makeConnection(new URL(newUrl));
        status = connection.getResponseCode();
    }

    System.out.println(connection.getHeaderField("Last-Modified"));
    System.out.println(connection.getHeaderField("If-None-Match"));
    System.out.println(connection.getHeaderField("ETag"));
    System.out.println(connection.getResponseCode());
    System.out.println(connection.getHeaderField("Last-Modified"));
    System.out.println(connection.getHeaderField("If-None-Match"));
    System.out.println(connection.getHeaderField("ETag"));
    System.out.println(connection.getResponseCode());
    return connection;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...