2015-11-17 2 views
1

Как развязать строку ответа JSON в правильный объект с помощью клиента отдыха Apache CXF?Отказ от ответа клиента Apache CXF

Ниже приводится моя реализация, которая называет конечную точку останова. Я использую Apache CXF 2.6.14

Пожалуйста, не забудьте, что статус ответа скажет мне, к какому объекту нужно развязать его.

public Object redeem(String client, String token) throws IOException { 
    WebClient webClient = getWebClient(); 
    webClient.path(redeemPath, client); 

    Response response = webClient.post(token); 
    InputStream stream = (InputStream) response.getEntity(); 

    //unmarshal the value 
    String value = IOUtils.toString(stream); 

    if (response.getStatus() != 200) { 
     //unmarshall into Error object and return 
    } else { 
     //unmarshall into Token object and return 
    } 
} 

ответ

0

Мое решение.

Я запускаю проект на сервере Tomee. Внутри папки Tomee lib проект снабжен libtison lib.

серверы/Apache-tomee-1.7.1-jaxrs/Библиотека/выбросить за борт-1.3.4.jar

Можно использовать JSONObject, который находится внутри выбросить за борт Lib в сочетании с JAXBContext для разбора строка JSON отправляется обратно.

public Object redeem(String client, String token) throws Exception { 
    WebClient webClient = getWebClient(); 
    webClient.path(redeemPath, client); 

    Response response = webClient.post(token); 
    InputStream stream = (InputStream) response.getEntity(); 

    //unmarshal the value 
    String value = IOUtils.toString(stream); 

    //use the json object from the jettison lib which is located in the Tomee lib folder. 
    JSONObject jsonObject = new JSONObject(value); 

    if (response.getStatus() != 200) { 

     JAXBContext jc = JAXBContext.newInstance(ResourceError.class); 
     XMLStreamReader reader = new MappedXMLStreamReader(jsonObject); 
     Unmarshaller unmarshaller = jc.createUnmarshaller(); 

     ResourceError resourceError = (ResourceError) unmarshaller.unmarshal(reader); 
     return resourceError; 

    } else { 

     JAXBContext jc = JAXBContext.newInstance(Token.class); 
     XMLStreamReader reader = new MappedXMLStreamReader(jsonObject); 
     Unmarshaller unmarshaller = jc.createUnmarshaller(); 

     Token token = (Token) unmarshaller.unmarshal(reader); 
     return token; 
    } 
} 
Смежные вопросы