如何使用 Canvas 数据 API

马修S。

我一直在尝试使用 Canvas 数据 API ( https://portal.inshosteddata.com/docs/api ),但我一直无法接收到我请求的数据。我一直在阅读不同的 Canvas 表格以及如何做到这一点,但我仍然没有弄清楚。我正在阅读 Canvas Data Portal 上的文档,但它确实令人困惑。每当我发出 API 请求时,我收到的只是 Canvas Data Portal 主页的 HTML 数据。我没有从我想要的 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());
马修S。

我解决了我的问题。我在请求签名中放置的 url 路径以“/”字符结尾,而它不应该有。我没有意识到 /api/account/self/file/latest 和 /api/account/self/file/latest/ 有区别

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章