java - 如何使用我的 HTTP 获取请求发送授权密钥?
问题描述
我正在尝试向需要授权密钥的 REST API 发送 HTTP 请求。我的代码适用于不需要授权的 REST API,但是使用这个,我只收到错误 403。我需要帮助
.setRequestProperty("Authorization", key) 不起作用。我试过用“Bearer”+发送我的密钥,但仍然没有。
这是 api:https ://developer.clashroyale.com/#/getting-started
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class Json {
public static void main(String[] args) {
try {
String key;
URL url = new URL("https://api.clashroyale.com/v1/players/%23PPCY9Y2J/upcomingchests");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", key);
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
解决方案
当您转到https://developer.clashroyale.com/#/documentation中的文档并选择“试用”请求时,它会显示使用 curl 的示例请求。例如:
curl -X GET --header 'Accept: application/json' --header "授权:Bearer (token) " ' https://api.clashroyale.com/v1/locations?limit=5 '
在那里,您可以看到“Authorization”全是小写字母,并且您的密钥前需要“Bearer”。
因此,更改此行:
conn.setRequestProperty("Authorization", key);
为了:
conn.setRequestProperty("authorization", "Bearer " + key);
推荐阅读
- python - 读取超时。向 node.js API 发送 POST 请求时出错
- android - My App crashes when I try to use ArrayAdapter
- reactjs - mapStateToProps returns no data, data is undefined
- hyperlink - Item Tree not being populated from link selector in Sitecore 9.2
- javascript - Clicking anywhere on the page causes nav with class affix-top to change to class affix
- arrays - How to read multidimensional array in Verilog using $readmemh?
- javascript - 单个列搜索(文本输入)
- javascript - Does iOS/mobile Safari provide a javascript event or a media query for its font resizing control?
- python - Sqlalchemy sort data based on a specific value (name) and the others as ascending order
- regex - .htaccess rule fails on server if using optional trailing slash