2014-10-08 3 views
0

Когда мне нужно проверить, является ли код ответа одним из кодов успеха (2xx), тогда я обычно создаю целочисленный массив и просматриваю его. Например,Есть ли встроенный класс с HTTP-ответами и его категориями?

public static final int[] SUCCESS_STATUS_CODES = new int[]{ 
     200, 201, 202, 203, 204, 205, 206, 207, 208, 226 
}; 

Я делаю то же самое для других кодов ответа.

Мне было интересно, есть ли встроенный объект, который уже содержит все эти коды и регулярно обновляет их, которые я могу использовать?

Например,

//pseudo code 
if(responseCode is from success 2xx category) 
    do something 
else if (responseCode is from error 4xx category 
    do something 
+0

Какой HTTP-клиент вы используете? –

+1

Дубликат https://stackoverflow.com/questions/730283/does-java-have-a-complete-enum-for-http-response-codes –

+0

Я использую 'HttpURLConnection'. Разработка Android. – sandalone

ответ

1

Насколько я знаю, нет такого класса в стандартной библиотеке. Ближайший я знаю, если java.net.HttpURLConnection, который предоставляет статические константы для различных кодов.

Но вы, похоже, собираетесь работать больше, чем вам нужно. Категории кода ответа HTTP встроены в их значения. Вы должны быть в состоянии сделать что-то вдоль этих линий:

switch (responseCode/100) { 
    case 1: 
     /* informational response */ 
     break; 
    case 2: 
     /* success response */ 
     break; 
    case 3: 
     /* redirection response */ 
     break; 
    case 4: 
     /* client error response */ 
     break; 
    case 5: 
     /* server error response */ 
     break; 
    default: 
     /* bad response code */ 
     break; 
} 
0

org.springframework.http.HttpStatus имеет метод HttpStatus.is2xxSuccessful() возвращает логическое значение. Это часть Spring, не встроенная в Java, но, надеюсь, все же будет полезна для некоторых людей.