我正在尝试向REST API发送一个HTTP请求,这需要一个授权密钥。我的代码适用于不需要授权的REST API,但是对于这个,我只得到了错误403。我需要帮助
.setRequestProperty("Authorization",密钥)不起作用。我试着用“持有者”+发送我的钥匙,但还是没有结果。
接口如下: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();
}
}
}发布于 2019-04-10 03:31:33
当您转到https://developer.clashroyale.com/#/documentation中的文档并选择“试用”一个请求时,它会显示一个使用curl的示例请求。例如:
curl -X GET --header 'Accept:/json‘--header“授权:承载(令牌)”'https://api.clashroyale.com/v1/locations?limit=5’
在这里,你可以看到"Authorization“全是小写的,并且你需要在你的key之前加上"Bearer”。
因此,请更改此行:
conn.setRequestProperty("Authorization", key); 适用于:
conn.setRequestProperty("authorization", "Bearer " + key); https://stackoverflow.com/questions/55599090
复制相似问题