#xml #jax-rs
#xml #jax-rs
Вопрос:
У меня есть мой хук в виде
@POST
@Path("add")
@Produces("text/html")
@Consumes("application/xml")
public String addCustomer(SiebelMessage siebMsg) {
// TODO: Log the XML message here
return siebMsg.getAccount().get(0).getHomePage(); // works
}
}
Я хочу зарегистрировать фактическое XML-сообщение в локальной файловой системе, как мне получить доступ.
Комментарии:
1. удалось ли вам найти ответ?
Ответ №1:
Если вы используете jersey, вы могли бы использовать LoggingFilter, предоставляемый Джерси (или вдохновиться этим для реализации вашего фильтра, который делает что-то подобное), если вы не хотите зависеть от конкретного API реализации, вам придется использовать JAXB для записи XML для SiebelMessage.
Комментарии:
1. Спасибо, но я хочу получить доступ к XML, который я отправляю в теле HTTP в виде POST, тем же методом: AddCustomer(). например, я смог изменить метод для автоматического ввода контекстной информации, как показано ниже.`code’ общедоступная строка AddCustomer(SiebelMessage siebMsg,@Context UriInfo ui ) { System.out.println(ServletContext); MultivaluedMap<Строка, String> Параметры запроса = ui.getQueryParameters(); Многозначная карта<Строка, String> Параметры пути = ui.getPathParameters(); возвращает siebMsg.getListOfSitAccountUpdateBmc().getAccount().get(0).getHomePage(); } ‘код’
Ответ №2:
В CXF вам нужно получить доступ к MesageContext
Для этого используется метод getHttpServletRequest(). Первоначальный способ CXF заключается в
((BindingProvider)proxy).getRequestContext()
Но вы можете использовать аннотацию @Context
http://cxf.apache.org/docs/jax-rs-basics.html#JAX-RSBasics-Contextannotations
Ответ №3:
Составные данные / форма- это хитрость, как в следующем
@POST
@Path("addCustomer")
@Produces("multipart/form-data")
@Consumes({"multipart/form-data"})
public String addCustomer(String formData) {
System.out.println("The formDatan" formData);
return "SEEYA";
}
Следующая часть посвящена тому, как разархивировать XML в Pojo. это другая тема.