Отправка POST с токеном в Java
Я разрабатываю JavaFX десктоп-приложение и столкнулся с проблемой парсинга данных, которую решает dadata.
В описании их api расписано как подключаться к ним. Но мне не удалось найти пример, как подключиться через (например) библиотеку URLConnection с указанием токенов (API-ключ, секретный ключ), а пример с сайта dadatа это интеграция из SpringBoot, что мне не подходит.
Может кто подсказать в какую сторону необходимо искать?
Ответы (1 шт):
Автор решения: neuromancer
→ Ссылка
Мне удалось найти решение, надо было просто разобраться со структурой самого запроса: токены указываются в заголовке, но для dadata не надо указывать длину тела запроса, поэтому через HttpURLConnection это будет выглядеть так:
int postDataLength = fiasAddress.length();
String response="";
try {
URL url = new URL(_URL);
HttpURLConnection conn= (HttpURLConnection) url.openConnection();
conn.setDoOutput( true );
conn.setRequestMethod("POST");
conn.setRequestProperty( "Content-Type", "application/json");
conn.setRequestProperty( "charset", "utf-8");
conn.setRequestProperty("Authorization", "Token "+_APIkey);
conn.setRequestProperty("X-Secret", _SecretKey);
conn.setDoOutput(true);
String inputString = "[\""+fiasAddress+"\"]";
byte[] input = inputString.getBytes("utf-8");
try(OutputStream os = conn.getOutputStream()) {
os.write(input, 0, input.length);
}
Reader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
for (int c; (c = in.read()) >= 0;){
response += c;
}
return response;
}