В книге под названием «深入 理解 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.
Спасибо за помощь.
Если вы спрашиваете, что такое filterDatas, нам не хватает контекста в этом коде, поскольку он нигде не объявлен в вашем фрагменте.
@FedericoklezCulloca Я думаю, OP интересно, где определяется filterDatas? Я предполагаю, что это Iterable<FilterData>, но я не вижу ссылки на него во фрагменте.
@ Mr.Polywhirl да, я заметил, удалил этот комментарий и попросил более уместных пояснений :)
Я нашел отрывок из упомянутой здесь книги blog.csdn.net/weixin_36952403/article/details/74910350, он на мандаринском, в хроме вы можете его перевести.




Предполагая, что тип 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. Но сейчас, может быть, это всего лишь случайное действие автора. Еще раз спасибо.
Для меня это тоже довольно необычно, поэтому я потрудился поискать его. Я бы не осмелился сказать, что это необычная практика - отправлять один и тот же ключ несколько раз, но лично я никогда не делал этого. Кроме того, исходный код является неполным, поскольку здесь отсутствуют определения классов для нескольких классов: / Удачи вам :)
Добро пожаловать в stackoverflow. Ваш вопрос и так непонятен. Я бы посоветовал добавить больше информации, иначе люди не смогут вам помочь. Как вариант, можно связаться с автором книги?