Необходимо отправить запрос XML из Java и разобрать ответ XML - PullRequest
0 голосов
/ 05 июля 2011

Мне нужно отправить запрос xml из отдельного класса Java. XML-запрос, который мне нужно отправить, имеет форму -

http://url/query.do?
Request=<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Request initialTime="2011-03-11T16:40Z">
<Query>Java</Query></Request>

Итак, я вставил

String xmlRequest = "url/query.do? Request=<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Request initialQueryTime="2011-03-11T16:40Z"> <Query>Java</Query></Request>"

, а затем

URL url = new URL(xmlRequest);
     URLConnection conn = (URLConnection)url.openConnection();
     //conn.connect();
     BufferedReader in = new BufferedReader(
                    new InputStreamReader(
                    conn.getInputStream()));

Но я получаю IOException - Server returned HTTP response code: 505 for URL at sun.net.www.protocol.http.HttpURLConnection.getInputStream.

Этот URL при обращении через браузер возвращает ответ XML, и мне нужно проанализировать этот XML с помощью STAX.

Может ли кто-нибудь представить какую-то идею о том, как достичь вышеуказанного.

Может ли кто-нибудь предоставить пример кода или исправить мой код, чтобы я мог сформировать запрос xml и проанализировать ответ xml. Пожалуйста, помогите.

Спасибо

Свати

Ответы [ 3 ]

1 голос
/ 05 июля 2011

Символы '?', '&' И '=' рассматриваются в качестве разделителей аргументов и значений в URL, поэтому сначала попытайтесь закодировать ваш XML.

String xmlRequest = "url/query.do?Request=" + URLEncoder.encode("your xml", "UTF-8");
URL url = new URL(xmlRequest);
...

Браузер выполняет кодирование URL для каждого запроса. Вот почему это работает.

0 голосов
/ 05 июля 2011

Этот вопрос относится к этому .

Код ошибки 505 означает следующее:

Сервер не поддерживает илиотказывается поддерживать версию протокола HTTP, которая использовалась в сообщении запроса.Сервер указывает, что он не может или не хочет выполнить запрос, используя ту же основную версию, что и клиент.

0 голосов
/ 05 июля 2011

рекомендуется использовать клиентскую библиотеку apache HTTP (она имеет много функций, которые можно использовать в вашем случае).

Вы также можете использовать Apache Tika api.

учитывайте размер публикуемого URL, смотрите здесь ..

использование HTTP-клиента apache дает вам возможность использовать метод POST вместо метода GET, таким образом вы можете опубликовать в запросе довольно большой файл.

...