Axis2C: отправка данных с пользовательским типом контента

Клиент (браузер) ожидает получить в ответ строку JSON. У меня есть строка JSON для отправки на стороне службы. Однако вызывающая функция (axis2_invoke) ожидает axiom_node_t, что заставляет ее возвращать XML.

Есть ли способ отправить мой ответ так, как я хочу, а не как объекты аксиомы


person arpit772    schedule 26.11.2015    source источник


Ответы (1)


AxiOM — это уровень абстракции данных, а не XML.

Говоря об Axis2/C-unofficial, который изначально поддерживает JSON, вы получите ответ в зависимости от формата вашего запроса:

  • если вы настроите Content-Type вашего запроса на application/json, вы получите ответ в формате JSON;
  • если вы настроите Content-Type вашего запроса на application/soap+xml, вы получите ответ в формате SOAP.

Ваш ответ AxiOM должен быть преобразован в соответствующий формат транспортным отправителем Axis2/C.

person loentar    schedule 28.11.2015
comment
Спасибо за ваш ответ. Однако я не использую неофициальную версию (я полагаю, что официальная версия поддерживает только XML при прохождении уровня абстракции данных). Есть ли способ отправить ответное сообщение обратно из того места, где вызывается метод службы, или может быть перехвачено сообщение после фазы выхода сообщения в исходящий поток путем добавления модуля. - person arpit772; 01.12.2015
comment
Нет, изменить формат ответа невозможно. Чтобы отправить что-то отличное от XML, вы должны реализовать собственный транспорт. В качестве примера того, как интегрировать транспорт JSON, вы можете увидеть это: github.com/loentar/axis2c -неофициальный/совершить/ . Другой подход заключается в разработке собственного прокси-модуля (автономного двоичного файла или модуля веб-сервера), который преобразует XML в JSON. - person loentar; 01.12.2015
comment
Подробнее о поддержке JSON официальной веткой (Axis2/C-1.7.0) см.: issues.apache.org/jira/browse/AXIS2C-1645 . Сам патч для Axis2/C-1.7.0: issues.apache .org/jira/secure/attachment/12601463/ - person loentar; 01.12.2015
comment
Большое спасибо за ваш вклад :). Они были очень полезны. - person arpit772; 01.12.2015
comment
Привет, Лоентар. Я создаю веб-службу Restful и хочу отправить изображение из службы клиенту (в настоящее время браузер). Как мне поступить с данной проблемой. (Я перешел на неофициальное использование Apache Axis2C) - person arpit772; 02.12.2015
comment
Я думаю, вам следует изучить MTOM: axis.apache.org/ axis2/c/core/docs/axis2c_manual.html#mtom - person loentar; 02.12.2015