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