Возврат XML-ответа в службе REST

Я пишу веб-службу RESTful, в которой я хочу вернуть XML, содержащий некоторый набор результатов. Я использовал XSTREAM и проанализировал объект в строку XML. Поскольку мне нужно вернуть эту строку, мне нужно знать, как передать ее вызывающему клиенту.

Один из способов — вернуть RESPONSE вызывающему клиенту. И мой пример кода здесь показывает, что я пытаюсь сделать.

@Path("somepath")
public class ClassToReturnXML
{
    public Response methodToReturnXML()
    {

       ResponseBuilder builder = new ResponseBuilderImpl();
       builder.type(MediaType.TEXT_XML);
       builder.entity(myXMLString);
       return builder.build();
    }
}

К сожалению, он не возвращает объект, хотя код состояния равен 200. Я неправильно создаю экземпляр ResponseBuilder? Я также где-то видел, что он должен быть создан следующим образом:

ResponseBuilder builder = Response.status(200);

Пожалуйста, предложите, какой способ вернуть XML в ответ.

Я ИСПОЛЬЗУЮ APACHE CXF для УСЛУГ RESTFUL. (Версия 2.2.3 -- я думаю) :D Заранее спасибо за всю помощь.


person Priyank    schedule 05.08.2009    source источник


Ответы (2)


Была только проблема с уборкой. В конце концов это сработало. В конце концов я создал ответ следующим образом.

Response response = Response.status(200).type(MediaType.TEXT_XML).entity(xmlString).build();

Это работает просто отлично. Я надеюсь, что это поможет кому-то.

person Priyank    schedule 07.08.2009
comment
Что такое значение «xmlString»? И как это определить? - person NayMak; 26.02.2020

Имеет ли ответ HTTP правильный заголовок типа содержимого, чтобы определить, что это Xml, т. е. text/xml или application\xml? Ознакомьтесь с Правильный тип контента для фидов XML.

Статус ответа 200 — это всего лишь один из стандартных кодов ответов HTTP, означает, что запрос выполнен успешно, поэтому возвращайте его только в этом случае.

person Dave Anderson    schedule 05.08.2009