我正在寻找一种更好的方法来从包含 HTTP 标头的字符串中提取数据。例如,我想从字符串的内容长度部分获取数字 160:“Content-Length: 160\r\n”。
似乎 HTTP 标头中的所有数据都以名称、冒号和空格开头,值之后紧跟 '\r' 和 '\n' 字符。
目前我正在这样做:
int contentLengthIndex = serverHeader.lastIndexOf("Content-Length: ");
int contentLastIndex = serverHeader.length()-1;
String contentText = serverHeader.substring(contentLengthIndex + 16, contentLastIndex);
contentText = contentText.replaceAll("(\\r|\\n)", "");
int contentLength = Integer.parseInt(contentText);
但它看起来很乱,它只适用于在字符串末尾获取“Content-Length”。是否有更好更通用的解决方案来从包含 HTTP 标头的字符串中提取值,该标头可以调整为同时获取 int 值或 String 值?
我还应该提到,连接需要能够在请求后将数据返回给浏览器,据我了解,这使我无法获得使用 HttpURLConnection 的好处。