Служба RESTfull в Джерси с XML (необходима инкапсуляция вне JSON-объекта) - PullRequest
0 голосов
/ 14 сентября 2011

Я пытаюсь реализовать полноценный веб-сервис на Java вместе с Джерси. Чтобы общаться между клиентской и серверной сторонами, я следю за XML. Я уже пробовал JSON.

При использовании JSON инкапсуляция в объекте POJO выглядит следующим образом:

@XmlRootElement
public class MyPojo {
    public int a;
    public int[] b;
}

Тогда я только что получил заголовок в классе отдыха, как

public String classname(MyPojo p)

Но мне нужен заголовок вроде

public String classname(int a, int [] b)

для автоматического создания элементов формы путем чтения заголовков остальных элементов. Пример показал мне, что:

@Consumes("application/xml")
public classname methodname(@QueryParam("a") Integer a, @QueryParam("b") IntArray b)

должно работать. Вопрос: Как я могу создать XML-запрос (например, JSON.stringify () в XML) для этого метода? Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 17 сентября 2011

Не уверен, что я понимаю вопрос, но постараюсь дать некоторые подсказки - надеюсь, по крайней мере, некоторые из них будут актуальны.Если нет, пожалуйста, поделитесь более подробной информацией о вашем приложении (то есть это для запросов GET или POST? Почему важно иметь 2 отдельных параметра и т. Д.)

Если вам нужно отправить XML или JSON в объекте запроса(например, в запросе POST), тогда невозможно получить их в нескольких параметрах - вы должны жить с одним параметром объекта, как у вас было выше.Вы можете сделать следующее:

@POST
@Consumes("application/xml")
public ClassName postMethod(MyPojo p) {
    return postMethod(p.a, p.b);
}

public ClassName postMethod(int a, int[] b) {
    // do something
}

Или, если вам действительно не нужен XML / JSON, если вы размещаете сообщения с использованием HTML-форм, обычно вы делаете следующее:

@POST
@Consumes("application/x-www-form-urlencoded")
public ClassName postMethod(@FormParam("a") Integer a, @FormParam("b") String b /*I think arrays are not supported - will have to parse it yourself*/) {
    // do something
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...