Пытаюсь запросить личные данные в GDAX, но постоянно получаю неверный запрос. Не могу понять, что я делаю не так. Пожалуйста помоги.
private static JsonObject getAuthenticatedData() {
try {
String accessSign = getAccess();
System.setProperty("http.agent", "Java Client");
URL url = new URL("https://api.gdax.com/accounts");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("CB-ACCESS-KEY", "accesskey");
con.setRequestProperty("CB-ACCESS-SIGN", accessSign);
con.setRequestProperty("CB-ACCESS-TIMESTAMP", ""+System.currentTimeMillis() / 1000L);
con.setRequestProperty("CB-ACCESS-PASSPHRASE", "passphrase");
con.setRequestProperty("Content-Type", "application/json");
con.setConnectTimeout(5000);
con.setReadTimeout(5000);
String status = con.getResponseMessage();
System.out.println(status);
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
System.out.println(content);
in.close();
con.disconnect();
}catch(Exception e) {
e.printStackTrace();
}
return null;
}
И это:
public static String getAccess() {
//Set the Secret
String secret = "secret==";
//Build the PreHash
String prehash = Instant.now().toEpochMilli()+"GET"+"/accounts";
String hash = null;
try {
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
sha256_HMAC.init(secret_key);
hash = Base64.encodeBase64String(sha256_HMAC.doFinal(prehash.getBytes("UTF-8")));
hash = hash.replace("\n", "");
System.out.println(hash);
}
catch (Exception e){
e.printStackTrace();
}
return hash;
}
Можете ли вы попробовать добавить/изменить следующие строки кода в ваших методах:
частный статический JsonObject getAuthenticatedData() { Отметка времени строки = Instant.now().getEpochSecond() + ""; Строка accessSign = getAccess(timestamp); con.setRequestProperty("CB-ACCESS-TIMESTAMP", отметка времени); con.setRequestProperty("принять", "приложение/json"); }
общедоступная статическая строка getAccess (отметка времени строки) { Предварительный хэш строки = метка времени+"GET"+"/accounts"; byte[] secretDecoded = Base64.getDecoder().decode(secret); SecretKeySpec secret_key = новый SecretKeySpec(secretDecoded, "HmacSHA256"); хеш = Base64.getEncoder().encodeToString(sha256_HMAC.doFinal(prehash.getBytes())); хэш возврата; }
Чак
X4RQ
X4RQ