0

问题是java.io.EOFException当我尝试做时它会在服务器端启动ois = new ObjectInputStream(request.getInputStream());

private void writeObjectStream(HttpServletRequest request,
        HttpServletResponse response) {
    ObjectOutputStream oos = null;
    try {
        oos = new ObjectOutputStream(response.getOutputStream());
        oos.writeChars("x");
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        IOUtil.closeQuietly(oos, ois);
    }
}

writeObjectStream 的调用:

....    
    response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
                response.setHeader("Location", "www.sample.com");
                response.setHeader("Content-Length", "" + 500);
                writeObjectStream(request, response);
                return true;
4

2 回答 2

3

对象流具有特定的格式,如果您正在阅读不是格式的内容,您很容易混淆它。您使用这种类型的流写入/读取的每种类型的数据都有一个标签,如果标签与预期的标签不匹配,则抛出的异常是 EOFException。我认为这很令人困惑,因为它可以在不同的上下文中抛出 StreamCorruptedException ,这会更合适。

简而言之,您正在尝试读取不是 ObjectInputStream 的内容,或者您​​正在读取的数据类型不正确,或者它已损坏。

于 2013-08-07T21:00:37.467 回答
0

您不需要 ObjectOutputStream 来调用 writeChars()。在另一端使用 DataOutputStream 和 DataInputStream。

于 2013-08-07T21:13:52.097 回答