gpt4 book ai didi

java - 我不明白为什么我不能将 object.getter() 添加到 MultivaluedMap

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:07 25 4
gpt4 key购买 nike

我尝试发送带有一些参数的 POST 请求。为此,我形成了 MultivaluedMap

如果我将其添加到MultivaluedMap

String ban = subscriber.getBan();
String username = user.getUsername();
postData.add("agent", username);
postData.add("datasource", "online");
postData.add("accountId", ban);
String json = RESTUtil.doPost(url, postData);

一切正常

但是如果我做到了

postData.add("agent", user.getUsername());
postData.add("datasource", "online");
postData.add("accountId", subscriber.getBan());
String json = RESTUtil.doPost(url, postData);

我有错误:

com.sun.jersey.api.client.ClientHandlerException: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.List

这是我的帖子方法

public static String doPost(String url, MultivaluedMap formData) {
try {
Client client = Client.create();
WebResource wr = client.resource(url);
client.setConnectTimeout(CONNECTION_TIMEOUT);
client.setReadTimeout(READ_TIMEOUT);
ClientResponse response2 = wr
.accept("application/json;")
.type("application/x-www-form-urlencoded; charset=UTF-8")
.post(ClientResponse.class, formData);
if (response2.getStatus() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + response2.getStatus());
}
return response2.getEntity(String.class);
} catch (Exception e) {
LOG.log(Level.WARNING, "callRestUrl:", e);
JsonObject jo = new JsonObject();
jo.addProperty("resultCode", "EXCEPTION");
jo.addProperty("details", e.getMessage());
return GSON.toJson(jo);
}
}

在第二种情况下,我在 .post(ClientResponse.class, formData); 之后收到错误

我不明白出了什么问题。 subscriber.getBan()user.getUsername() 返回类似于 banusername 的字符串,但是如果我使用 getter,则会出现错误。

第 2 部分。我找到了这篇文章 this article

但我不明白何时使用addput以及它们的区别?

最佳答案

您能否明确说明如何创建 MultivaluedMap 实例?你用得怎么样?

MultivaluedMap 是一对键(单值)和值(对象列表)。请参阅声明:

public interface MultivaluedMap<K,V> extends Map<K,List<V>>

我想您的两个片段都在同一段代码中按顺序使用。在第一种情况下,您初始化键“ban”的值(这意味着:该值是一个元素的列表),在第二种情况下,您将一个值添加到列表中相同的键“ban”。对于键“用户名”来说,情况完全相同。在你的第一种情况下,Java自动将列表(一个值)捕获为字符串,在第二个添加之后,情况不可能是这样。

要验证它,您只需更改顺序(先执行第二种情况,然后执行第一种)。在第二个之后,您应该会收到相同的错误。

要解决您的问题,如果您想“更新/替换”值,请考虑使用方法 putSingle 而不是 add,或者在下次使用之前重新启动 formData 实例 (formData = new ...)。

关于java - 我不明白为什么我不能将 object.getter() 添加到 MultivaluedMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35911477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com