检查字符串时出现 NoSuchElementException

NoSuchElementException while checking a string

我目前正在编写一个基本的 http 服务器。所需功能之一是在协议版本为 1.1 且没有主机线路时显示 400 错误。

我有以下扫描器(行是保存请求文件的数组)

  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();

然后我有以下 if 语句,它应该检查 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();

next() throws NoSuchElementException if no more tokens are available. So you should first check if there are more elements with hasNext()

if (scn.hasNext()) {
    variable = scn.next();
}

如你所说,可能是"there is no Host line"。加个守卫怎么样?

String hostline = scn2.hasNext() ? scn2.next() : ""