如何将多个序列化java对象作为get参数发送?

如何将多个序列化java对象作为get参数发送?,java,serialization,Java,Serialization,我有多个可序列化的java对象,我需要用get参数发送这些对象,比如 www.example.com?objects=rO0ABXNyACl0ci5iaXp...... 如何发送这些对象 目前我正在尝试使用逗号(“%2C”)来分隔对象,但我不知道Java在尝试序列化对象时是否可以使用“%2C” String serializedObject1 = "sf21adada...."; String serializedObject2 = "nfg312111...."; String serial

我有多个可序列化的java对象,我需要用get参数发送这些对象,比如

www.example.com?objects=rO0ABXNyACl0ci5iaXp......
如何发送这些对象

目前我正在尝试使用逗号(“%2C”)来分隔对象,但我不知道Java在尝试序列化对象时是否可以使用“%2C”

String serializedObject1 = "sf21adada....";
String serializedObject2 = "nfg312111....";
String serializedObject3 = "mjhgfffff....";

String URL = "www.example.com?objects=" + serializedObject1 + "%2C" + serializedObject2  + "%2C" + serializedObject3;
编辑:我有一些应用程序通过http请求发送对象,我需要更新此应用程序以支持发送多个对象。这里是主要代码

String serializedObject = URLEncoder.encode(Base64.encodeObject(myObject), "UTF-8");
URL = "www.example.com?objects=" + serializedObject;
makeRequest(URL);

您可以使用像Genson这样的JSON序列化程序来序列化POJO。 但是,要小心,因为GET参数有一个最大大小(通常可以通过服务器本身进行配置)。因此,您可能需要考虑使用POST方法。 以下是一个代码示例,它可以用来发送您的对象:

List<MyTypeOrSyperType> list = new ArrayList<MyTypeOrSuperType>();
...
String json = genson.serialize(list);
response.setContentType("application/json");
response.getWriter().write(json);
List List=new ArrayList();
...
字符串json=genson.serialize(列表);
setContentType(“应用程序/json”);
response.getWriter().write(json);

序列化不会生成字符串。它产生字节。首先需要将这些字节转换为可打印字符,然后对它们进行URL编码。但是传递序列化的Java对象,甚至更多的是作为查询字符串参数,在我看来是个糟糕的主意。顺便说一句,查询字符串的长度是有限的。你想达到什么目标?为什么要这样做?例如,您希望序列化为JSON。然后你考虑用这种格式表达你的数据。我同意@JBNizet。这似乎是一个非常糟糕的想法。至少将它们作为请求主体中的POST参数发送。但是,您确实应该将HTTP请求与所使用的主机语言分离。也就是说,要发送具有相同名称的多个参数,语法是
?objects=blablabla&objects=foo&objects=bar
。您已经正确地将字节转换为字符串,并对结果进行URL编码,因此,正如我刚才解释的那样,只需将它们连接起来就可以了(除非它们太大)。但实际上,您不应该通过HTTP发送序列化Java对象,当然也不应该将其作为查询字符串参数发送。无论您走到哪里,您都有遇到URL长度限制的严重危险。