首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ObjectOutputStream返回对象

使用ObjectOutputStream返回对象
EN

Stack Overflow用户
提问于 2011-05-19 02:54:39
回答 2查看 2.5K关注 0票数 2

我发现了一段声称使用ObjectOutputStream返回对象的java代码。

代码语言:javascript
复制
     OutputStream outstr = response.getOutputStream();
     ObjectOutputStream oos = new ObjectOutputStream(outstr);

     oos.writeObject(process);

     oos.flush();
     oos.close();

响应是一个HttpServletResponse对象。我想知道这段代码是如何工作的,以及如何测试它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-19 03:27:08

下面是一个简单的示例,展示了如何通过HTTP读取序列化对象。

代码语言:javascript
复制
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();
    }
}
票数 1
EN

Stack Overflow用户

发布于 2011-05-19 02:59:07

它使用Java的默认二进制序列化协议(我个人不太愿意使用)将对象序列化为servlet的输出流(例如,将在HTTP响应中提供的数据)。有关详情,请参阅object serialization spec

至于如何测试它,这取决于您想要使用的测试级别。您可以使用一个假的HTTP servlet库,获取响应,然后尝试使用ObjectInputStream再次读取它,也可以运行实际的servlet容器,发出HTTP请求,然后尝试反序列化响应。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6049663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档