Аутентификация RESTful API из настольного клиентского приложения JavaFX

#java #rest #authentication

#java #rest #аутентификация

Вопрос:

В настоящее время я разрабатываю настольное приложение, написанное на JavaFX FXML, и мне нужно подключиться к удаленному RESTful API, который я написал в NodeJS. Я пытался найти обновленную ссылку, соответствующую JDK 11 и выше, но, похоже, большинство хороших ссылок, которые я нахожу, либо весной, либо были написаны по крайней мере 3 года назад.

Кто-нибудь может указать мне правильное направление? Спасибо.

Комментарии:

1. опять же, это выглядит не связанным с fx .. как вы думаете, почему fx имеет к этому какое-либо отношение?

Ответ №1:

Это то, что я придумал до сих пор. Это кажется примитивным и болтливым по сравнению с тем, что я привык использовать AJAX и Axios, но, тем не менее, работает:

 private void btnLoginClick() throws IOException {
    CloseableHttpClient httpclient = HttpClients.createDefault();
    HttpPost httpPost = new HttpPost("http://localhost:8000/api/auth");
    httpPost.addHeader("accept", "application/json");
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("email", username.getText()));
    params.add(new BasicNameValuePair("password", password.getText()));
    httpPost.setEntity(new UrlEncodedFormEntity(params));

    try {
        CloseableHttpResponse response = httpclient.execute(httpPost);
        HttpEntity entity = response.getEntity();
        String data = EntityUtils.toString(entity);
        JSONObject json = new JSONObject(data);
        EntityUtils.consume(entity);
        response.close();
        // Do more processing here...

    } catch (IOException e) {
        Alert a = new Alert(AlertType.ERROR);
        a.setContentText("Login: Unable to connect to server. Check your connection or try at a later time. To report this error please contact m@jhourlad.com.");
        a.show();
    } finally {
        httpclient.close();
    }
}