我发现了一段声称使用ObjectOutputStream返回对象的java代码。
OutputStream outstr = response.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(outstr);
oos.writeObject(process);
oos.flush();
oos.close();响应是一个HttpServletResponse对象。我想知道这段代码是如何工作的,以及如何测试它?
发布于 2011-05-19 03:27:08
下面是一个简单的示例,展示了如何通过HTTP读取序列化对象。
import java.net.URL;
import java.net.HttpURLConnection;
import java.io.ObjectInputStream;
/**
* This is a simple example to read an object.
*
* This is not production ready code ;-)
*/
public class Sample {
public static void main(final String [] pArgs) throws Exception {
// Change SERVER:PORT/PATH to match your application.
final URL url = new URL("http://SERVER:PORT/PATH");
final HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(10000);
conn.connect();
final ObjectInputStream is
= new ObjectInputStream(conn.getInputStream());
final Object obj = is.readObject();
if (obj instanceof String) System.out.println((String)obj);
else // Convert to object and do whatever.
is.close();
conn.disconnect();
}
}发布于 2011-05-19 02:59:07
它使用Java的默认二进制序列化协议(我个人不太愿意使用)将对象序列化为servlet的输出流(例如,将在HTTP响应中提供的数据)。有关详情,请参阅object serialization spec。
至于如何测试它,这取决于您想要使用的测试级别。您可以使用一个假的HTTP servlet库,获取响应,然后尝试使用ObjectInputStream再次读取它,也可以运行实际的servlet容器,发出HTTP请求,然后尝试反序列化响应。
https://stackoverflow.com/questions/6049663
复制相似问题