我嘗試使用一些參數發送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()'添加了一個新的 –