0

我想知道您是否在使用 Java EE 对公开的 api 方法之一(在本例中为更新工作区)执行 PUT 请求时取得了任何成功。

我目前有以下代码段,但得到了 400。对于数据变量,我可能已经尝试了在何处放置双引号、要编码什么的每一个排列,并且还尝试了 JSON。

String data = URLEncoder.encode("name=My Sandbox", "UTF-8")
URL url = new URL("https://app.asana.com/api/1.0/workspaces/7**********2");
HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
conn.setRequestMethod("PUT");
String login = "dm**********************v8:";
String encodedLogin = new BASE64Encoder().encode(login.getBytes());
conn.setRequestProperty("Authorization", "Basic " + encodedLogin);
OutputStreamWriter wr = null;
conn.setDoOutput(true);
wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();

BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
while ((line = rd.readLine()) != null) {
    sb.append(line);
}
wr.close();
rd.close();
4

1 回答 1

0

您正在尝试的操作(使用 PUT 更新工作区名称)应该可以工作。我相信您的问题是您正在对整个字符串“name=My Sandbox”进行 URLEncoding,而不是独立地对键和值进行编码。所以我怀疑您发送的数据有效负载是:

名称%3DMy%20沙盒

而它应该是:

名称=我的%20 沙盒

当 API 服务器出错时,它们通常会包含某种诊断消息,可以帮助您发现问题。如果上述修复不起作用,您能否提供您收到的错误消息?

于 2012-04-24T20:13:11.953 回答