我尝试使用一些参数发送POST请求。为此,我形成MultivaluedMap
我不明白为什么我不能将object.getter()添加到多值映射
,如果我让这个增加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
这是我的POST方法
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);
}
}
而在第二种情况下我之后。员额(ClientResponse.class,FORMDATA)出现错误;
我不明白什么是错的。 subscriber.getBan()
和user.getUsername()
返回字符串,如ban
和username
,但如果我使用getter,则会出现错误。
和第2我发现这篇文章this article
,但我不明白何时使用add
或put
和他们的区别?
可能是因为它由'subscriber#getBan()',而不是'add()'抛出? –
区别在于'put()'替换了任何现有的值,而'add()'添加了一个新的 –