powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как задать размер респонса ?
10 сообщений из 10, страница 1 из 1
Как задать размер респонса ?
    #39586150
javanoobie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Не могу понять как можно задать размер респонса в байтах и допустим, если размер контента выходит за пределы допустимого диапазона(который мы задаем min max), статус URL-а должен меняться(например critical).

Как я понял ,нужно делать как то через apache http client reponse size. сделать отдельный метод ,котрый из респонса вытянет размер заданным полям и добавить параметры expectedResponseSizeFrom expectedResponseSizeTo ; If(!(responseSize > expectedResponseSizеFrom && responseSize < expectedResponseSizeTrue)) - то тогда статус critical ; expectedResponseSizeTrue -> expectedResponseSizeTo;

Нужно проверить если размер соответсвует параметрам;

Буду очень благодарен если кто то приведет простой пример с кодом;
А то я запарился уже
...
Рейтинг: 0 / 0
Как задать размер респонса ?
    #39586155
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно чуть более понятно?
Клиент сделал запрос на заданный диапазон байт, а (http-)сервер собирается ответить другим диапазоном или что?
...
Рейтинг: 0 / 0
Как задать размер респонса ?
    #39586200
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javanoobie,

Мы пишем клиентский код?
Мы работаем с HTTP протоколом?
Что такое "статус URL-а"? Что-то из вашей предметной области? Такого общепринятного понятия я не знаю.
Вы не хотите просто измерять объем полученых с сервера данных? Это не вариант?
На сколько сложный запрос? java.net.URL не достаточно? Нужен обязательно Apache HTTP Client.

В Apache Commons IO есть CountingInputStream, который не сложно и самому написать. Можно просто завернуть ответ сервера в него и вычитать целиком.
Есть HTTP заголовок Content-Length, который приличные сервера должны устанавливать. Он вам не подходит?
...
Рейтинг: 0 / 0
Как задать размер респонса ?
    #39586495
javanoobie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,Надо чекнуть если размер ответа соответсвует заданным параметрам(min max), если не соответсвует то выводим какой то warning
...
Рейтинг: 0 / 0
Как задать размер респонса ?
    #39586502
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javanoobieНадо чекнуть
Проверить.

javanoobieесли размер ответа соответсвует заданным параметрам(min max), если не соответсвует то выводим какой то warning
Вот и поговорили. И для чего я столько вопросов задавал, если вам не интересно разбираться.
...
Рейтинг: 0 / 0
Как задать размер респонса ?
    #39586586
javanoobie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, конкретный вопрос , для начала ,не понимаю как из моего респонса вытянуть байты :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
  @Scheduled(fixedRate = 1000)
    public void scheduleFixedRateTask() throws IOException {
    List<Monitor> tasks = monitorRepository.findAll();

    for (Monitor monitor : tasks){
        if(!monitor.isActive()){
            continue;
        }
        HttpClient client = HttpClientBuilder.create().build();
        HttpGet request = new HttpGet(monitor.getUrl());
        HttpResponse response = client.execute(request); // получаю респонс
        Monitor.MonitoringStatus status = OK;
        if(response.getStatusLine().getStatusCode() != monitor.getExceptedHttpResponseCode()){
            status = CRITICAL;


        }


        monitor.setStatus(status);
        monitorRepository.save(monitor);

        System.out.println(monitor.getUrl() + response.getStatusLine().getStatusCode() + "--" + monitor.getExceptedHttpResponseCode() );


    }

}
...
Рейтинг: 0 / 0
Как задать размер респонса ?
    #39586597
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO

https://stackoverflow.com/questions/5769717/how-can-i-get-an-http-response-body-as-a-string-in-java

Дальше получить размер строки уже тривиально.

Другое дело, что в ситуации когда "повезло" может быть заполнен HTTP Header Content-Length
но в общем, AFAIK это желательное, но не обязательный заголовок.

IMHO & AFAIK
...
Рейтинг: 0 / 0
Как задать размер респонса ?
    #39586598
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

С другой стороны не понятно, нужно ли только тело ответа, или заголовки тоже считать? Или как именно нужно считать ответы с gzip компрессией?
...
Рейтинг: 0 / 0
Как задать размер респонса ?
    #39586606
javanoobie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
здесь хороший пример, http://magicmonster.com/kb/prg/java/net/apache_httpclient.html
но всеравно не могу понять как зафигачить на своем примере,с полученого респонса

System.out.println(String.format("got %d bytes", bytes.length));
...
Рейтинг: 0 / 0
Как задать размер респонса ?
    #39586740
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javanoobie но всеравно не могу понять как зафигачить на своем примере,с полученого респонса
System.out.println(String.format("got %d bytes", bytes.length));"Респонс" это "отклик". Он же - "ответ" или "ответ сервера".
А раз сервер формирует ответ - ему (серверу) и ставить Content-Length.
Если сервер не может (не хочет) вычислять размер ответа - заголовок просто не формируется.

Если "риквест" ("запрос" или "запрос клиента"), то всё аналогично: дёргаем API и, если клиент проставил Content-Length, сравниваем ожидаемое со своими критериями и формируем отлуп с нужным кодом, если нас что-то не устраивает.
Если клиент не установил Content-Length, начинаем вычитывать тело запроса (body, payload), попутно подсчитывая сколько байт мы уже приняли. Дальше по ситуации - или просто закрываем входной поток по достижении лимита или дочитываем до конца, отбрасывая принятое. Код статуса ставится аналогично варианту с априори известным размером запроса.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как задать размер респонса ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]