В настоящее время я пишу базовый http-сервер. Одной из необходимых функций является отображение ошибки 400, если версия протокола равна 1,1, и нет линии хоста.NoSuchElementException при проверке строки
У меня есть следующий сканер, (строки массив, которые держат файл запрос)
Scanner scn = new Scanner(lines[0]);
String command = scn.next();
String fileName = scn.next();
String protocol = scn.next();
Scanner scn2 = new Scanner(lines[1]);
String host = scn2.next();
String hostline = scn2.next();
, а затем я следующее, если заявление, которое, как предполагается проверить, является ли Hostline пусто
if (protocol.equals("HTTP/1.1") && hostline.isEmpty()) {
String reply="HTTP/1.0 400 Bad Request\r\n" +
"Connection: close\r\n" +
"Content-Type: " + contentType + "\r\n" +
datestr +
"<h1>HTTP/1.0 400 Bad Request</h1>\r\n";
outs.write(reply.getBytes()); }
Когда я запускаю его и проверить его я получаю NoSuchElementException на этой линии:
String hostline = scn2.next();
Что вы вводите в программу? – hfontanez
Это данные из файла запроса, поскольку мы тестируем его с помощью netcat. Тот, который я использую, чтобы проверить это, если есть: GET /tiny.html HTTP/1.1 Хост: Connection: close – MikeyD
Ваш пример работал на меня. Убедитесь, что ваш ввод правильный – hfontanez