1

我必须序列化一个对象并从 httpserver 发送它我已经知道如何将字符串从服务器发送到客户端,但我不知道如何发送对象

所以我有这个代码:

public class Test {
public static void main(String[] args) throws Exception {
    HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
    server.createContext("/test", new MyHandler());
    server.setExecutor(null); // creates a default executor
    server.start();
}
static class MyHandler implements HttpHandler {
    public void handle(HttpExchange t) throws IOException {
        String response = "This is the response";

        //this part here shows how to send a string
        //but i need to send an object here
        t.sendResponseHeaders(200, response.length());
        OutputStream os = t.getResponseBody();
        os.write(response.getBytes());
        os.close();
    }
}
}

所以我试图搜索谷歌但没有结果,我试图以这种方式更改代码(机械地不知道我在做什么,因为我不习惯 Java 中的 HttpServer):

SendResponse obj = new SendResponse();
                    ObjectOutputStream objOut = new ObjectOutputStream();
                    t.sendResponseHeaders(200, objOut);

                    objOut.writeObject(obj);
                    objOut.close();

但是 eclipse 向我显示了一个错误,它告诉我 ObjectOutputStream() 构造函数不可见并且 httpExchange 不适用于参数 (int,ObjectInputStream)

你知道我该如何解决这个问题吗?预先感谢您的帮助 !

4

2 回答 2

1

您可以使用一个 OutputStream 作为参数来访问构造函数

ObjectOutputStream objOut = new ObjectOutputStream( the http or any other output stream here );

ObjectOutputStream 的构造函数发送一些头字节,而 ObjectInputStream 的构造函数需要这些头字节。您应该为每个对象创建一个新的 ObjectOutputStream 和一个新的 ObjectInputStream,或者为所有对象只创建一个 ObjectOutputStream 和 ObjectInputStream。

一个更简单的选择可能是google gson它很容易使用,它将一个 java 类转换为 json 字符串,反之亦然。

于 2012-11-01T13:35:56.353 回答
0

经过几个小时尝试不同的事情后,您只需更换

t.sendResponseHeaders(200, objOut);

t.sendResponseHeaders(200,0);

正如用户cyon 在这个问题上提到的

于 2012-11-02T14:15:56.677 回答