Что означает `filterDatas`

В книге под названием «深入 理解 Java Web 技术 内幕» , есть некоторый код.

Его средство - создать HTTP-запрос:

HttpClent httpClient = createHttpClient();
PostMethod postMethod;
String domainName = Switcher.domain;
postMethod = new PostMehtod(domainName);
postMethod.addRequestHeader("Content-Type", "application/x-www-form- urlencoded;charset=GBK");
for (FilterData filterData :filterDatas) {
    postMethod.addParameter("ip", filterData.ip);
    postMethod.addParameter("count", String.valueOf(filterData.count));
}
try {
    httpClient.executeMehtod(postMehtod);
    postmethod.getResponseBodyAsString();
} catch(Exception e){
    logger.error(e);
}

Я знаю структуру HTTP-пакета. Но не знаю, что означает FilterData в строке №7.

Спасибо за помощь.

Добро пожаловать в stackoverflow. Ваш вопрос и так непонятен. Я бы посоветовал добавить больше информации, иначе люди не смогут вам помочь. Как вариант, можно связаться с автором книги?

Wim Deblauwe 21.12.2018 16:20

Если вы спрашиваете, что такое filterDatas, нам не хватает контекста в этом коде, поскольку он нигде не объявлен в вашем фрагменте.

Federico klez Culloca 21.12.2018 16:23

@FedericoklezCulloca Я думаю, OP интересно, где определяется filterDatas? Я предполагаю, что это Iterable<FilterData>, но я не вижу ссылки на него во фрагменте.

Mr. Polywhirl 21.12.2018 16:23

@ Mr.Polywhirl да, я заметил, удалил этот комментарий и попросил более уместных пояснений :)

Federico klez Culloca 21.12.2018 16:24

Я нашел отрывок из упомянутой здесь книги blog.csdn.net/weixin_36952403/article/details/74910350, он на мандаринском, в хроме вы можете его перевести.

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

Ответы 1

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

Предполагая, что тип postMethod - org.apache.commons.httpclient.methods.PostMethod - тогда вы добавляете к нему только некоторые параметры, используя двухпараметрический метод addParameter(String paramName, String paramValue), который просто adds a new parameter to be used in the POST request body.

Я предполагаю, что FilterData - это своего рода общий класс, который просто содержит некоторые значения, такие как ip и count. Вы добавляете параметр с тем же именем (ip и count) несколько раз в запрос, если filterDatas (который является FilterData[] или любым другим типом коллекции) содержит более одной записи.

Согласно Википедии, это нормально:

[...] This is a format for encoding key-value pairs with possibly duplicate keys.

Источник: https://en.wikipedia.org/wiki/POST_(HTTP)#Use_for_submitting_web_forms

Спасибо за Ваш ответ ! Когда я увидел код и Википедию из вашего ответа. Я понимаю об этом. Раньше я подозревал, что это просто нормальный параметр. но for и ip сбивают меня с толку. Я не понимаю, почему может быть несколько параметров ip. Но сейчас, может быть, это всего лишь случайное действие автора. Еще раз спасибо.

Ph0rse 21.12.2018 16:33

Для меня это тоже довольно необычно, поэтому я потрудился поискать его. Я бы не осмелился сказать, что это необычная практика - отправлять один и тот же ключ несколько раз, но лично я никогда не делал этого. Кроме того, исходный код является неполным, поскольку здесь отсутствуют определения классов для нескольких классов: / Удачи вам :)

maio290 21.12.2018 16:42

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