javax.ws.rs.core.Response преобразовать в строку в java1.6 - PullRequest
0 голосов
/ 11 июня 2018

Я хочу преобразовать Ответ в строку

Response response  = ClientBuilder.newBuilder().sslContext(sslContext).build().target(url)
                        .request(MediaType.APPLICATION_JSON).get();

// I have tried as below.. It didn't work
String result = (String)response.getEntity();

Ошибка java.lang.ClassCastException: org.glassfish.jersey.client.HttpUrlConnector$1 cannot be cast to java.lang.String

Пожалуйста, не использую версию Java 1.6, и я не могу найти методы, такие как readEntity (String.class)и getEntity (String.class) из класса Response.

Альтернативный способ работает, как показано ниже, давая String.class в get.Но мне нужен объект Response Сначала проверьте код состояния, затем я хочу преобразовать его в строку.

String response =     ClientBuilder.newBuilder().sslContext(sslContext).build().target(url)
                                .request(MediaType.APPLICATION_JSON).get(String.class);

Пожалуйста, помогите в решении этой проблемы

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Если мы не используем jar-клиент на Джерси, мы не получим readEntity (класс) и getEntity (класс).Эти методы не являются частью javax.ws.rs.core.Response они являются частью clientjar Джерси.Так что если мы используем javax.ws.rs.core.Response, то мы должны вручную конвертировать, как показано ниже

    javax.ws.rs.core.Response response; 
    String result = readInputStreamAsString((InputStream) response.getEntity());

public static String readInputStreamAsString(InputStream in) {
        try {
            BufferedInputStream bis = new BufferedInputStream(in);
            ByteArrayOutputStream buf = new ByteArrayOutputStream();
            int result = bis.read();
            while (result != -1) {
                byte b = (byte) result;
                buf.write(b);
                result = bis.read();
            }
            return buf.toString();
        } catch (IOException ex) {
            return null;
        }
    }
0 голосов
/ 11 июня 2018

Метод readEntity() - это путь:

Response response = ...
String value = response.readEntity(String.class);

Я не понимаю, почему вы говорите, что такой метод недоступен для вас:класс ClientBuilder (как и метод readEntity()) также был представлен в JAX-RS 2.0 (Java EE 7) как часть Client API .

Нет ли у вас каких-либо зависимостей JAX-RS 1.x в пути к классам?

...