Я пытаюсь получить токен доступа от https://www.reddit.com/api/v1/access_token.. Для этого мне нужно отправить CLIENT_ID
и CLIENT_SECRET
по указанному выше URL.Я сделал это, используя Почтальон:
Как показано на скриншоте, я отправил grant_type
в качестве GET
параметра со значением client_credentials
и параметр Authorization
со значением Basic heregoestheencodedkeyandid
.Тип reuest был установлен как POST
.Он работал правильно - я получил токен доступа в ответе JSON
.
Однако, когда я пытаюсь сделать то же самое с помощью Java, я получаю ошибку Server returned HTTP response code: 411
:
public class RedditExample {
private static String loginLink = "https://www.reddit.com/api/v1/access_token";
public static void main(String[] args) {
RedditExample redditExample = new RedditExample ();
redditExample.login();
}
public boolean login() {
try {
URL loginURL = new URL(loginLink + "?grant_type=client_credentials");
HttpURLConnection connection = (HttpURLConnection) loginURL.openConnection();
setupPOSTConnection(connection);
InputStream input = connection.getInputStream();
String inputString = new Scanner(input, "UTF-8").useDelimiter("\\Z").next();
System.out.println(inputString);
}
catch (Exception e) {
System.out.println(e.toString());
}
return true;
}
private static void setupPOSTConnection(HttpURLConnection connection) throws Exception {
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Authorization", "Basic heregoestheencodedkeyandid");
connection.connect();
}
}
Я не уверен, что я делаю здесь по-другому, по сравнению с почтальоном, поэтому любая помощь будет оценена.
РЕДАКТИРОВАТЬ: Вот что я пытался добавить:
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestProperty("Content-Length", "0");
connection.setRequestProperty("Content-Length", "10");
String userAgent = "test /u/someuser";
connection.setRequestProperty("User-Agent", userAgent);
К сожалению, ни сработало - ошибка все та же.