Как использовать canvas data api

Я пытался использовать Canvas Data API (https://portal.inshosteddata.com/docs/api), но не смог получить запрашиваемые данные. Я читал о различных формах Canvas и о том, как это сделать, но до сих пор не понимаю. Я читаю документацию на Canvas Data Portal, но это действительно сбивает с толку. Всякий раз, когда я делаю свой запрос к API, все, что я получаю, это HTML-данные домашней страницы Canvas Data Portal. Я не получаю никаких данных с нужного мне URL. Я пишу свой код на Java. Согласно документации, я должен использовать GET, HmacSHA256 для кодирования моей подписи, а также заголовок авторизации и данных. Вот часть моего кода:

String time = getCurrentTime();
System.out.println(time);
String signature = "GET\n" + getBaseUrlData() + "\n\n\n" + "/api/account/self/file/latest\n" + time + "\n" + getSecret();

SecretKeySpec signingKey = new SecretKeySpec(getSecret().getBytes(), "HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(signingKey);
byte [] rawHmac = mac.doFinal(signature.getBytes());
String result = Base64.encode(rawHmac);
System.out.println(result);

String authorizationHeader = "HMACAuth " + getApiKey() + ":" + result;
System.out.println("Authorization header: " + authorizationHeader);
java.net.URL url = new URL("https://" + getBaseUrlData() + "api/account/self/file/latest");
System.out.println(url);
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", authorizationHeader);
con.setRequestProperty("Date", time);
System.out.println(con.getResponseCode());
0
0
263
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я решил свою проблему. Путь к моему URL-адресу, который я указывал в подписи для запроса, заканчивался символом «/», хотя его не должно было быть. Я не понимал, что есть разница в / api / account / self / file / latest и / api / account / self / file / latest /

Другие вопросы по теме