java—我应该先将客户机的流读入字符串,然后解析http还是在从客户机的流中获取输入的同时解析http?

r7xajy2e  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(274)

我正在实现一个web服务器,想知道是应该先将客户机的http请求读入一个字符串,然后解析该http字符串,还是在读取客户机流时解析http。我用的是java,做的是后者。伪代码类似于:
从客户机的字符串中读取第一行
如果第一行(http状态行)无效,则引发异常
将第一行拆分为 method , path ,和 HTTP 版本。
while(从客户机的字符串读取不是)eof
5.读这句话
...
后一个选项的伪代码是:
a<-初始化字符串
while(从客户机的字符串读取)不是eof
3.读这句话
4.将行附加到 a 5.将clrf附加到 a 然后处理字符串并在请求无效时抛出异常。
你认为哪种方法是正确的?

kqlmhetl

kqlmhetl1#

我建议你在得到它的时候对它进行解析,因为,例如,只有当你得到 Content-Length 标题。
你可以这样做,一行一行地读(显然,测试一下这个)

public static String readLine( InputStream is ) throws IOException {
     StringBuilder sb = new StringBuilder();

     int c;
     while( (c = is.read()) >= 0 ) {
          if ( c == '\r') continue;
          if ( c == '\n') break;
          sb.append( (char)c );
     }
     return sb.toString();
}

相关问题