2016-01-19 3 views
1

Я пытаюсь сериализовать ответ jax-rs на json string.Convert InboundJaxrsResponse to json string

Ответ от сервера в формате JSON, и я получаю его от джерси клиента с:

Response resp = target.request().method("PUT", Entity.json(payloadBean)) 

где payloadBean моей просьбы JSon. Все работает нормально, но я не могу преобразовать resp в строку json, чтобы зарегистрировать его.

Если я пытаюсь:

String s = EntityUtils.toString((HttpEntity) resp.getEntity()); 

я получаю:

org.glassfish.jersey.client.internal.HttpUrlConnector cannot be cast to org.apache.http.HttpEntity 

Кстати, если я не отбрасываю к HttpEntity, компилятор говорит:

toString (org.apache.http.HttpEntity) in EntityUtils cannot be applied to (java.lang.Object). 

Моего соответствующий импорт являются:

import org.apache.http.HttpEntity; 
import org.apache.http.util.EntityUtils; 
import javax.ws.rs.client.ClientBuilder; 
import javax.ws.rs.client.Entity; 
import javax.ws.rs.client.WebTarget; 
import javax.ws.rs.core.Response; 

Любые идеи?

ответ

1

Наконец, мне нужно было буферизовать данные сущности сообщения, так как поток был уничтожен, и я получал ошибку позже, когда я пытался перечитать ответ. Таким образом, для того, чтобы войти сначала, а затем использовать его снова мне пришлось:

resp.bufferEntity(); //need to buffer entity, in order to read the entity multiple times from the Response's InputStream 
String s = resp.readEntity(String.class); 
5

Использование resp.readEntity(String.class)

public abstract <T> T readEntity(Class<T> entityType)

Тип Параметры: T - экземпляр объекта Java типа.

Параметры: entityType - тип сущности.

Прочитайте поток ввода сущности сообщения как экземпляр указанного типа Java с помощью MessageBodyReader, который поддерживает отображение потока объекта сообщения на запрошенный тип.

+0

Если я пытаюсь это к делу (а) я получаю: «Ошибка чтения из объекта из входного потока» с детальным сообщением «ком. quickxml.jackson.databind.JsonMappingException: не удается создать экземпляр org.apache.http.HttpEntity, проблема: абстрактные типы либо должны быть сопоставлены конкретным типам, либо иметь пользовательский десериализатор, либо создаваться с дополнительной информацией о типе в [Источник: org.glassfish.jersey.me[email protected]1c802d1d; строка: 1, column: 1] " – chefarov

+0

Почему вы пытаетесь создать HttpEntity. Если вы хотите JSON, создайте POJO. Это то, что Джексон пытается сделать, превратить JSON в POJO типа HttpEntity. Он не может, поэтому вы получаете исключение. Если вы не хотите создавать POJO, просто извлеките его как String и работайте со String. –

+0

ОК, я понял. Дело в том, что ответ может представлять собой много разных классов POJO, поэтому я искал общий способ разобрать любой структурированный ответ json. В любом случае, спасибо за ваше время – chefarov