Java 如何解决“问题”;401未经授权。“未提供Api密钥”;
我正在尝试使用java中的api提取数据。执行此操作时,api返回401:Unauthorized。我目前注册为管理员用户,使用api密钥作为令牌。我还尝试使用声明我的令牌和setRequestProperty(“授权”、“令牌”、+访问令牌)。你知道我可能做错了什么吗 我也尝试过使用cURL和UI来达到类似的效果。我已经得到了预期的输出,但在java中这是一个身份验证问题Java 如何解决“问题”;401未经授权。“未提供Api密钥”;,java,https,get,access-token,http-status-code-401,Java,Https,Get,Access Token,Http Status Code 401,我正在尝试使用java中的api提取数据。执行此操作时,api返回401:Unauthorized。我目前注册为管理员用户,使用api密钥作为令牌。我还尝试使用声明我的令牌和setRequestProperty(“授权”、“令牌”、+访问令牌)。你知道我可能做错了什么吗 我也尝试过使用cURL和UI来达到类似的效果。我已经得到了预期的输出,但在java中这是一个身份验证问题 public static void main(String[] args) { // TODO Auto
public static void main(String[] args) {
// TODO Auto-generated method stub
//build each line and have a response to it
BufferedReader reader;
String access_token = "abcde123 ";
String line;
StringBuffer responseContentReader = new StringBuffer();
try {
//URL url = new URL("https://testurl.com");
connection = (HttpsURLConnection) url.openConnection();
connection.setRequestProperty("Authorization", "Token" + access_token);
//here we should be able to "request" our setup
//Here will be the method I will use
connection.setRequestMethod("GET");
//after 5 sec if the connection is not successful time it out
connection.setConnectTimeout(7000);
connection.setReadTimeout(7000);
int status = connection.getResponseCode();
//System.out.println(status); //here the connect was established output was 200 (OK)
//here we are dealing with the connection isnt succesful
if (status >299) {
reader = new BufferedReader(new InputStreamReader(connection.getErrorStream()));
while ((line = reader.readLine()) != null) {
responseContentReader.append(" ");
responseContentReader.append(line);
responseContentReader.append("\n");
}
reader.close();
//returns what is successful
}else {
reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while ((line = reader.readLine()) != null) {
responseContentReader.append(" ");
responseContentReader.append(line);
responseContentReader.append("\n");
}
reader.close();
}
System.out.println(responseContentReader.toString());
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}finally {
connection.disconnect();
}
}
}
我从控制台得到的输出是
{"success":"false","error":"unauthorized","message":"401 Unauthorized. No API key provided."}
您正在
curl
命令中设置X-Risk-Token
标题。在Java中,您需要执行相同的操作:
connection.setRequestProperty("X-Risk-Token", access_token);
请发布有效的
curl
命令。@KarolDowbecki这是curl-H“X-Risk-Token:”-X感谢您的响应,但现在我也收到了500个响应{“error”:“Internal Server error”}发生此错误是因为我的代码吗?或者服务器出现问题?您必须在服务器上调试,因为服务器响应中没有足够的详细信息。