Возврат XML-ответа в службу REST - PullRequest
3 голосов
/ 05 августа 2009

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

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

@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 для ОТДЫХАЮЩИХСЯ УСЛУГ. (Версия 2.2.3 - наверное): D Заранее спасибо за помощь.

Ответы [ 2 ]

9 голосов
/ 07 августа 2009

Это была просто проблема очистки. В конце концов это сработало. Я создал ответ следующим образом.

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

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

2 голосов
/ 05 августа 2009

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

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

...