【发布时间】:2012-02-09 21:45:13
【问题描述】:
我目前正在创建一个小型网络服务器(用于测试目的),但我在读取 HTTP 请求标头时遇到问题(来自浏览器,在我的情况下是 chromium)。
首先,我只是尝试了这样的事情:
BufferedReader in = new BufferedReader(
new InputStreamReader(client_socket.getInputStream(), "UTF-8")
);
StringBuilder builder = new StringBuilder();
while (in.ready()){
builder.append(in.readLine());
}
return builder.toString();
这对于第一个请求效果很好。然而,在第一个请求完成后,ready()-方法只返回了false(我关闭了client_socket以及所有的读者/作者)。
经过一番搜索,我偶然发现了这个老问题:Read/convert an InputStream to a String
我尝试了前四个解决方案(两个使用 Apache Commons,一个使用 Scanner,一个使用 do-while 循环)。所有这些都被永久阻止,浏览器给了我一个“网站无法访问”的错误。
我想自己做这件事(不使用任何库或嵌入式服务器),这就是我什至尝试的原因。
我现在有点迷茫,你会怎么做?
【问题讨论】:
标签: java sockets io http-headers