Java IO Exception для DOMParser

Я пытаюсь проанализировать XML-файл в Java, используя синтаксический анализатор DOM со следующим кодом:

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

[...]

File file = new File("some/path");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(file);

И последняя строка (при вызове функции.parse()) выдает ошибку:

java.io.IOException: Server returned HTTP response code: 403 for URL: http://testng.org/testng-1.0.dtd

Как мне исправить эту ошибку?

2 ответа

Решение

Он пытается загрузить testng-1.0.dtd DTD для вашего XML-документа.

Загрузите его сами, откуда вы можете его получить, и настройте DocumentBuilder искать там, предоставляя EntityResolver в DocumentBuilder.setEntityResolver(),

Или исправьте свой HTTP прокси. Сам документ не защищен авторизацией, что означает 403.

Вы пытаетесь получить доступ к некоторому URL в вашем коде. Код состояния HTTP 403 означает, что доступ запрещен, обычно это происходит, когда не установлен заголовок пользовательского агента. Вы можете установить его следующим образом:

URLConnection connection = new URL("https://www.google.com/search?q=" + query).openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");

Пожалуйста, обратитесь к этому для более подробной информации.

Другие вопросы по тегам