Рестлет: отправка xml в запросе HTTP - PullRequest
0 голосов
/ 19 июня 2011

Как я могу отправить XML-файл в запросе HTTP GET или HTTP put?Я использую рамки рестлета.Я новичок в этом, и в соответствии с тем, что я прочитал, я должен сериализовать XML.После этого, как я могу отправить его в HTTP-запросе?

1 Ответ

1 голос
/ 19 июня 2011

Это довольно просто, даже если вы не используете библиотеку, которая объединяет кусочки (я предполагаю, что Restlet действительно предлагает некоторые упрощения): как вы упомянули, все, что вам нужно, это HTTP-соединение / запрос, и возможность производить (и, вероятно,глотай) XML.Таким образом, помимо вещей, характерных для Restlet (которые, как мы надеемся, могут объяснить другие), есть «партизанский» подход, использующий только отдельные части.

Чтобы получить HTTP-соединение, вы можете просто использовать функциональность JDK (если это делаетне работает, http-клиент apache или async-http-client может предложить больше функциональности);что-то вроде:

URL url = new URL("http://myservice.mycompany.com:8080/path/to/service");
// configure settings here if/as necessary
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// if you need to post stuff, do:
conn.setRequestMethod("POST");
// need to set content type too possibly
conn.setDoOutput(true); // but only if you do POST stuff
OutputStream out = conn.getOutputStream();
// here you would output XML request
//...
out.close();
// and now read response
InputStream in = conn.getInputStream();
// and process it
// ...
in.close();

Теперь, что касается создания / потребления XML, вы можете использовать все обычные инструменты, которые читают / пишут XML с использованием потоков ввода / вывода.Если вам нравится привязка данных (Java POJOs к / из XML), JAXB - это путь (javax.xml.bind. *);Реализация по умолчанию в JDK 1.6 и выше.

В качестве альтернативы вы можете просто использовать реализацию Stax (javax.xml.stream. *), Такую как Woodstox , для чтения / записи XML с помощью простых вызовов;для получения бонусных очков, посмотрите StaxMate , который немного упрощает этот стиль.

...