Я пытаюсь установить соединение с API, который защищен заголовками и токеном. Я установил код, в котором я сам не вижу никаких недостатков, и теперь я врезался в стену. То, что я не хочу делать, это получить некоторые данные JSON из URL, но я получаю это сообщение:
"Сервер вернул код ответа HTTP: 401 для URL: ..."
Код, который я показываю, был протестирован при извлечении JSON из небезопасного API, и он работал.
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: 401 для URL: 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)