Как преобразовать код HttpStatus в int в Java? - PullRequest
0 голосов
/ 23 января 2020

Я использую метод RestTemplate postForEntity для POST до конечной точки. Если POST успешен, statusCode variable должен изменить свое значение на код состояния 201, но у меня возникают трудности с преобразованием HttpStatus в int в Java. Я получаю сообщение об ошибке Cannot cast from HttpStatus to int Я не мог найти какие-либо решения по этому поводу. Любые предложения приветствуются.

Вот мой код

import org.springframework.http.HttpStatus;

    public int postJson(Set<String> data) {
        int statusCode;
        try {

            ResponseEntity<String> result = restTemplate.postForEntity(url,new HttpEntity<>(request, getHttpHeaders()), String.class);

            statusCode = (int) result.getStatusCode();   

        } catch (Exception e) {
            LOGGER.error("No Post", e);
        }
        return statusCode;
    }
}

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Или,

Вы просто используете getStatusCodeValue() для сокращения.

import org.springframework.http.HttpStatus;

public int postJson(Set<String> data) {
    int statusCode;
    try {
        ResponseEntity<String> result = restTemplate.postForEntity(url,new HttpEntity<>(request, getHttpHeaders()), String.class);
        statusCode = result.getStatusCodeValue();
    } catch (Exception e) {
        LOGGER.error("No Post", e);
    }
    return statusCode;
}

0 голосов
/ 23 января 2020

Spring Framework возвращает Enum с HttpStatus:

public class ResponseEntity<T> extends HttpEntity<T> {

    /**
     * Return the HTTP status code of the response.
     * @return the HTTP status as an HttpStatus enum entry
     */
    public HttpStatus getStatusCode() {
        if (this.status instanceof HttpStatus) {
            return (HttpStatus) this.status;
        }
        else {
            return HttpStatus.valueOf((Integer) this.status);
        }
    }
}

И перечисление определяется следующим образом:

public enum HttpStatus {

    // 1xx Informational

    /**
     * {@code 100 Continue}.
     * @see <a href="https://tools.ietf.org/html/rfc7231#section-6.2.1">HTTP/1.1: Semantics and Content, section 6.2.1</a>
     */
    CONTINUE(100, "Continue"),

   // ...
}

Таким образом, вы можете получить статус как int следующим образом:

int statusCode = result.getStatusCode().value(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...