Общее·количество·просмотров·страницы

Java Dev Notes - разработка на Java (а также на JavaScript/Python/Flex и др), факты, события из АйТи

воскресенье, 25 июля 2010 г.

Итерация по Enumeration

Что делать, если нужно пробежаться по java.util.Enumeration? Мне это понадобилось, когда я писал отладочный метод, выводящий все заголовки HTTP-запроса. Метод getHeaderNames() из класса javax.servlet.http.HttpServletRequest возвращает Enumeration.

Можно конечно сделать по старинке, используя hasMoreElements()/nextElement():

Enumeration headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = (String)headerNames.nextElement();
// do smth...
}


но так делать не очень-то и хотелось. Вместо этого превратим Enumeration в java.util.ArrayList и уже
по нему будем совершать итерации:

List<String> headerNames = Collections.list((Enumeration<String>)request.getHeaderNames());
for (String headerName : headerNames) {
String headerValue = request.getHeader(headerName);
// do smth....
}


Ну, и напоследок, код метода, который выводит в строку все заголовки HTTP-запроса:

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Collections;
import java.util.Enumeraion;
 
public static String httpHeadersToString(HttpServletRequest request) {
List<String> headerNames = Collections.list((Enumeration<String>)request.getHeaderNames());
StringBuilder sb = new StringBuilder();
for (String headerName : headerNames) {
String headerValue = request.getHeader(headerName);
sb.append(headerName).append("='").append(headerValue).append("'\n");
}
return sb.toString();
}

Комментариев нет:

Отправить комментарий

Постоянные читатели