다음 Curl 스크립트를 Java로 변환하여 액세스 토큰을 얻으려고했지만 400이나 401에서 항상 실패하는 것 같습니다. 무엇을 잘못하고 있습니까? java에 대한 컬 변환은 아래에서 올바르게 수행됩니까? ...Crittercism Curl Script to Java HttpUrlConnection
컬 스크립트를 조언을 주시기 바랍니다 :
curl -X POST https://developers.crittercism.com/v1.0/token -u WV3v7ZTbYmqtUOMNvO7oPhLi8RN9zFoo -d 'grant_type=password&[email protected]&password=riTiBw28%3DpmFu'
, "WV3v7ZTbYmqtUOMNvO7oPhLi8RN9zFoo"는 OAUTH 된 ClientID입니다.
자바 코드 :
String url = "https://developers.crittercism.com/v1.0/token";
String urlParameters = "grant_type=password&[email protected]&password=secretpass";
String clientId = "nD8FiwFiOB1rpU5HVc2ESyRAwbFOOO:"; //Just for ref
URL obj = new URL(url);
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
con.setDoOutput(true);
con.setDoInput(true);
//add request header
String basicAuth = new String(Base64.encode(clientId.getBytes()));
con.setRequestProperty ("Authorization", String.format("Basic %s", basicAuth));
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
con.setRequestProperty("Accept", "*/*");
con.setRequestProperty("Content-Length", Integer.toString(urlParameters.getBytes().length));
con.setRequestMethod("POST");
// Send post request
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParameters);
wr.flush();
wr.close();
슬로우되는 예외,
Exception in thread "main" java.io.IOException: Server returned HTTP response code: 400 for URL: https://developers.crittercism.com/v1.0/token
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$6.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
at CrittercismClient.sendPost(CrittercismClient.java:102)
at CrittercismClient.main(CrittercismClient.java:26)
Caused by: java.io.IOException: Server returned HTTP response code: 400 for URL: https://developers.crittercism.com/v1.0/token
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source)
at CrittercismClient.sendPost(CrittercismClient.java:96)
... 1 more
안녕하세요, David, 답장을 보내 주셔서 감사합니다. 이메일 지원을 통해 유효한 oAuth ID를 받았습니다. 언급 한 내용을 변경 한 후에도 진행이 없습니다. 위의 편집 된 코드를 확인하십시오. OP에 던져진 오류 예외도 추가했습니다. FYI에서는 curl 스크립트가 cmd 프롬프트에서 성공적으로 실행되고 액세스 토큰을 반환합니다. – Ram