java - 如何序列化 HttpHandler 类中的对象

标签 java serialization response httpserver

我必须序列化一个对象并从 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)

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

最佳答案

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

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

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

更简单的替代方案可能是 google gson它很容易使用,它可以将 java 类转换为 json 字符串,也可以逆向转换。

关于java - 如何序列化 HttpHandler 类中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13178004/

相关文章:

java - 在没有 NetBeans 的情况下构建 JavaFX 项目

java - 实体可能不存在的 JPA 一对一关系

javascript - 使用 Express Js 提供目录图像

json - 服务器响应在中途被切断

.net - 客户端-服务器通信协议(protocol)的架构决策

javascript - 处理 PHP JavaScript (AJAX) 返回数据的最正确/友好的方法是什么?

java - 非静态的 java final 变量的命名约定

java - OpenCV CascadeClassifier 错误

java - 序列化与 Parcelable Android

DateTime 响应字符串的 Symfony 序列化程序