Отправка POST с токеном в Java

Рейтинг: 1Ответов: 1Опубликовано: 09.02.2023

Я разрабатываю JavaFX десктоп-приложение и столкнулся с проблемой парсинга данных, которую решает dadata.

В описании их api расписано как подключаться к ним. Но мне не удалось найти пример, как подключиться через (например) библиотеку URLConnection с указанием токенов (API-ключ, секретный ключ), а пример с сайта dadatа это интеграция из SpringBoot, что мне не подходит.

Может кто подсказать в какую сторону необходимо искать?

Ответы

▲ 0Принят

Мне удалось найти решение, надо было просто разобраться со структурой самого запроса: токены указываются в заголовке, но для 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;
        }