java - https:授权401
问题描述
我正在尝试建立与 API 的连接,该连接由标头和令牌保护。我已经设置了一个代码,我自己看不到任何错误,现在我碰壁了。我不想做的是从 URL 中获取一些 JSON 数据,但我收到了这条消息:
“服务器返回 HTTP 响应代码:URL 的 401:...”
我展示的代码已经过从不安全的 API 获取 JSON 的测试,并且可以正常工作。
public static void main(String[] args) {
String jsonText = "";
try {
String token = "ttn-account-v2.---";
URL url = new URL("https://---");
HttpsURLConnection http = (HttpsURLConnection) url.openConnection();
http.setRequestProperty("Authorization", "Bearer " + token);
http.setRequestMethod("GET");
http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//http.setRequestProperty("Accept", "application/json");
System.out.println("token: " + token);
http.setUseCaches( true );
http.setDoInput( true );
http.setDoOutput( true );
http.connect();
InputStream im = http.getInputStream();
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(im));
FileOutputStream fo = new FileOutputStream("test.txt");
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fo));
//Object obj = new JSONParser().parse(im);
String line = br.readLine();
while (line != null) {
sb.append(line + "\n");
System.out.println("line: " + line);
jsonText = sb.toString();
//System.out.println("json: " + jsonText);
bw.write(line);
bw.newLine();
line = br.readLine();
}
} catch (Exception e) {
e.printStackTrace();
}
}
代码应该打印 JSON 数据,但我收到的是 http 响应 401。
堆栈跟踪:
java.io.IOException:服务器返回 HTTP 响应代码:URL 401:https://--- 在 sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894) 在 sun.net.www .protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492) 在 sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263)
解决方案
这可能是一个很长的镜头,但更换
http.setRequestProperty("Authorization", "bearer" + token);
和
http.setRequestProperty("Authorization", "Bearer " + token);
并注意“承载”和令牌之间的空间。
推荐阅读
- ruby-on-rails - 在 Rails 控制器中循环 Ajax 数据
- typescript - 打字稿:为类减速器功能键入组合器
- python - 有没有办法同时运行两个循环(for循环,while循环,....)?
- swift - 为什么我的格子链接集成没有打开链接 UI
- javascript - 在禁用的选择元素上启用客户端验证
- linux - 如何从瞻博网络交换机获取日志消息以由 ELK 堆栈使用 filebeat 处理?
- python - 为什么这个 Python 函数不是通过引用传递的?
- python - 如何使用 OpenImages 数据集在 Keras 中训练二进制模型
- python - 混淆使用 __next__ 和 __iter__ 单独的一个代码
- php - 如何检查文件是否上传PHP