читать XML-файл, используя http - PullRequest
6 голосов
/ 24 августа 2009

Кто-нибудь знает о быстром способе чтения в XML-файл через http? (например, у меня есть файл, расположенный в http://www.abc.com/file.xml). Как я могу прочитать этот файл из Java-приложения

Вся помощь очень ценится

Спасибо Дэмиен

Ответы [ 3 ]

9 голосов
/ 24 августа 2009

Используйте java.net.URL, чтобы получить InputStream:

final URL url = new URL("http://www.abc.com/file.xml");
final InputStream in = new BufferedInputStream(url.openStream());
// Read the input stream as usual

Обработка исключений и прочее для краткости.

3 голосов
/ 24 августа 2009

Ответ Дейва Рэя действительно быстрый и простой, но он не будет хорошо работать с перенаправлениями HTTP или если вам, например, придется пройти через прокси-сервер, который требует аутентификации. К сожалению, стандартным классам Java API (в java.net) не хватает некоторой функциональности или их трудно использовать в таких обстоятельствах.

Библиотека с открытым исходным кодом Apache HttpClient может автоматически обрабатывать перенаправления и упрощает работу с прокси-серверами, требующими аутентификации.

Вот базовый пример:

HttpClient client = new HttpClient();
GetMethod method = new GetMethod("http://www.abc.com/file.xml");

int statusCode = client.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
    System.err.println("Method failed: " + method.getStatusLine());
}

byte[] responseBody = method.getResponseBody();
0 голосов
/ 24 августа 2009

Если вы планируете использовать DOM W3C и не интересуетесь данными ввода-вывода или HTTP, вы можете сделать следующее:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;

...

final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
final DocumentBuilder builder = factory.newDocumentBuilder();
final Document document = builder.parse("http://www.abc.com/file.xml");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...