2012-04-24 3 views
0

Java EE를 사용하여 노출 된 API 방법 (여기서는 작업 영역 업데이트) 중 하나에서 PUT 요청을 수행 한 경우 궁금합니다.Java에서 Asana로 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(); 

답변

0

시도중인 작업 (작업 영역 이름을 업데이트하기 위해 PUT 사용)이 작동해야합니다. 나는 당신의 문제가 당신이 URL과 "name = My Sandbox"라는 문자열 전체를 URL 인코딩하고 키와 값을 독립적으로 다루지 않는다고 믿는다. 그래서 나는 당신이 보내는 데이터 페이로드가 의심 :

이름 % 3DMy % 20Sandbox

그것이 있어야 반면 :

이름 = 내 20 % 샌드 박스

하면 API 서버 오류 그들은 종종 당신이 문제를 밝혀내는 데 도움이 될 어떤 종류의 진단 메시지를 포함합니다. 위의 수정 프로그램이 작동하지 않으면 수신중인 오류 메시지를 제공 할 수 있습니까?