I've spend a week trying to work out how to update some card information, I'd hoped to update a load of fields at one, e.g. name, desc, idList, closed etc, but after looking around it seems they have to be done individually, but when I try I keep getting a 400 response with message "invalid value for value" .
e.g. When I try to PUT https://api.trello.com/1/cards/[cardid]/desc?key=[mykey]&token=[mytoken]value=just+yet+another+test+of+trello+side+extended
what am I doing wrong?
Java code used to send Put is
private static InputStream doRequest(final String url, final String requestMethod, final Map<String, String> map)
{
try
{
final HttpsURLConnection conn = (HttpsURLConnection) new URL(url)
.openConnection();
conn.setRequestProperty("Accept-Encoding", "gzip, deflate");
conn.setDoOutput(requestMethod.equals(METHOD_POST) || requestMethod.equals(METHOD_PUT));
conn.setRequestMethod(requestMethod);
String plus = "";
if (map != null && !map.isEmpty())
{
final StringBuilder sb = new StringBuilder();
for (String key : map.keySet())
{
sb.append(sb.length() > 0 ? "&" : "")
.append(key)
.append("=")
.append(URLEncoder.encode(map.get(key), "UTF-8"));
}
conn.getOutputStream().write(sb.toString().getBytes());
conn.getOutputStream().close();
plus = sb.toString();
}
final int rc = conn.getResponseCode();
logger.info("response " + rc + " from " + requestMethod + " " + url + plus);
if (rc > 399)
{
return null;
}
else
{
return getWrappedInputStream(
conn.getInputStream(), GZIP_ENCODING.equalsIgnoreCase(conn.getContentEncoding())
);
}
}
catch (IOException e)
{
throw new TrelloException(e.getMessage());
}
}