如何在java中解析HTTP Get请求的第一行?

如何在java中解析HTTP Get请求的第一行?,java,http,Java,Http,我想知道是否有一种快速的方法来解析HTTPGET请求的第一行,从而获取目录信息?例如,如果我有:GET/test.txt HTTP/1.1,那么获取test.txt或任何请求的最简单方法是什么。文件可能会更改,因此硬编码已过时 string.split()是最简单的方法。如果是这样的话,最好的分割方式是什么。我不能用“/”来分割它,因为我需要的可能不止一个。有没有可能在第一个“/”之后将其拆分并抓取所有内容,然后在第一个空格处停止。谢谢 编辑: 因为我不需要GET和HTTP/1.1,所以最好删除

我想知道是否有一种快速的方法来解析HTTPGET请求的第一行,从而获取目录信息?例如,如果我有:GET/test.txt HTTP/1.1,那么获取test.txt或任何请求的最简单方法是什么。文件可能会更改,因此硬编码已过时

string.split()是最简单的方法。如果是这样的话,最好的分割方式是什么。我不能用“/”来分割它,因为我需要的可能不止一个。有没有可能在第一个“/”之后将其拆分并抓取所有内容,然后在第一个空格处停止。谢谢

编辑:


因为我不需要GET和HTTP/1.1,所以最好删除它们,然后再抓取其他所有内容

3.1.1。请求行

请求行以一个方法令牌开头,后跟一个 空间(SP)、请求目标、另一个单个空间(SP)、 协议版本,以CRLF结尾

 request-line   = method SP request-target SP HTTP-version CRLF
资料来源:

你的方法很好。只需删除
方法
HTTP版本

String requestUri = firstLineStr.substring(firstLineStr.indexOf(' ')+1, firstLineStr.lastIndexOf(' '));

因为我不需要GET和HTTP/1.1,所以最好删除它们,然后再抓取其他所有内容?-> 如果您确信文件名是您唯一需要的,并且在GET和HTTP/1.1之间始终可用,那么是的,在所有可能的解决方案中,它是正确的方法。 但是,如果您正在处理某个web应用程序,那么我相信有API可用于检索信息。
还要确保您的请求始终是GET,否则您必须保留PUT和etc可用的选项

您是否希望将请求的文件实际送达客户?或者您是出于其他原因检查HTTP请求?闻起来像是XY问题。您想做什么?快速执行还是快速写入?这是一个简单的web服务器,用于分配任务,因此get是我们目前唯一需要的。在这种情况下,我只使用第一行来确定文件类型/目录,并存储整行以备需要。回答正确,但引用了过时的规范。@JulianReschke OK,更改为RFC 7230