【问题标题】:How to send serialized object to a servlet using Apache HttpClient如何使用 Apache HttpClient 将序列化对象发送到 servlet
【发布时间】:2012-10-09 07:24:46
【问题描述】:

我有一个Main() 类,我在其中序列化一个名为Names 的类的对象。我正在使用Apache HttpClientHttpPost() 调用servlet

public static void main(String[] args) {

    Names names = new Names();
    names.setName("ABC");
    names.setPlace("Bangalore");
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("Name.txt"));
    out.writeObject(names);
    out.close();

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://localhost:6080/HttpClientGson/FirstHttpPostServlet");

现在,我如何发送ObjectOutputStream 对象?我写了以下行 httppost.setEntity(out)

但是setEntity() 只能接受HttpEntity 类型的对象。 HttpClient 还有其他方法可以用来发送序列化对象吗?

【问题讨论】:

  • 您需要发送multipart/form-data 请求。但是,在使用 Java 序列化而不是更可重用/可交换的数据传输格式(如 JSON/XML)时,您的方向完全错误。

标签: servlets serialization http-post apache-httpclient-4.x apache-httpcomponents


【解决方案1】:

你可以 SerializableEntity 类附带 HttpClient

httpost.setEntity(new SerializableEntity(mySerializableObj, false));

但请注意,二进制对象序列化仅应在绝对需要时使用。通常应首选其他序列化格式,例如 XML 或 JSON。

【讨论】:

    【解决方案2】:

    您可以使用 XStream 将对象序列化为 XML/JSON。 http://x-stream.github.io/ 然后通过它。

    【讨论】:

      猜你喜欢
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      相关资源
      最近更新 更多