отправить запрос в Unirest Java результат на 302 http результат - PullRequest
0 голосов
/ 10 мая 2018

Я обучаю себя созданию спокойного сервера и настольного Java-клиента.

мой бэкэнд основан на Spring Boot, у меня есть следующий контроллер:

@RestController
@RequestMapping(NiveauAccessController.URL)
public class NiveauAccessController extends GenericController{

public static final String URL = "/acl";

@Autowired
private NiveauAccessRepository niveauAccessRepository;

@PostMapping
private ServerResponse createACL(
            @RequestParam("aclTitle") final String aclTitle,
            @RequestParam("roles") final List<String> roles 
){
    if(isSessionValid()){
        final MNG_NIVEAU_ACCEE mng_niveau_accee = new MNG_NIVEAU_ACCEE();
        mng_niveau_accee.setAclTitle(aclTitle);
        List<Role> enumRoles = new ArrayList();
        roles.stream().forEach(role->{
            enumRoles.add(Role.valueOf(role));
        });
        mng_niveau_accee.setRoles(enumRoles);
        niveauAccessRepository.save(mng_niveau_accee);
        initSuccessResponse(mng_niveau_accee);
        return serverResponse;
    }
    initFailLoginResponse();
    return serverResponse;
}
.
.
.
}

для моегоJava-клиент Я использую этот пример кода для отправки запроса на отправку через мой сервер:

@FXML
private void doAdd(ActionEvent event) throws UnirestException {
    if (titleACL.getText().isEmpty()) {
        Alert alert = new Alert(Alert.AlertType.ERROR);
        alert.initModality(Modality.WINDOW_MODAL);
        alert.initOwner(((Node) event.getSource()).getScene().getWindow());
        alert.setContentText("Veuillez remplir le champ");
        alert.showAndWait();
        titleACL.requestFocus();
        return;
    }
    String title = titleACL.getText();
    Predicate<? super JFXCheckBox> selectedCheckboxes = checkbox -> {
        return checkbox.isSelected();
    };
    List<JFXCheckBox> selectedCheckBoxesList = observableCheckBoxes.values().stream().filter(selectedCheckboxes).collect(Collectors.toList());
    final List<String> roles = new ArrayList<>();
    selectedCheckBoxesList.stream().forEach(checkbox -> {
        roles.add(checkbox.getText());
    });

    HttpResponse<String> asString = Unirest.post(ACL_URL)
            .header("accept", "application/json")
            .field("aclTitle", title)
            .field("roles", roles)
            .asString();

    System.out.println(asString.getStatus());
    System.out.println(asString.getHeaders().values());
    if (asString.getStatus() == 200) {
    }
}

мой вывод:

302

[[0], [Чт, 10 мая 2018 г. 13:30:05 GMT], [https://localhost:8443/acl]]

Я не понимаю, почему я получаю код состояния 302, предназначенный для перенаправления URL.

Я пытаюсь использовать этот пост для добавления данных в свою базу данных.

Что мне нужно сделать, чтобы мой Сервер принял этот запрос?

1 Ответ

0 голосов
/ 25 мая 2018

havins ssl включил мой запрос через 8080 получил перенаправление на 8443, это не проблема с помощью веб-браузера, потому что он будет обрабатывать перенаправление, но в клиенте javafx вы должны обрабатывать перенаправление самостоятельно, так что есть возможное решение

if (asString.getStatus() == 200) {
      //your success handler code
}else if (asString.getStatus() == 302) {
      // use your Rest api to do the request using the response body
}
...