Принять заголовки вызова clojure.xml / parse - PullRequest
4 голосов
/ 03 июля 2010

При вызове функции clojure.xml/parse с URI Clojure выполняет HTTP-запрос GET для извлечения данных. Однако HTTP-запрос содержит следующие заголовки подтверждения:

text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

Разве это не должно быть application/xml?

1 Ответ

1 голос
/ 19 июля 2010

Вызов clojure.xml/parse с параметром String (URI) похож на этот код Java:

SAXParserFactory.newInstance().newSAXParser().parse("<your_uri>", <instance of XMLHandler provided by Clojure>);

Clojure не выполняет запрос HTTP GET.Он просто использует SAX-парсер в качестве парсера по умолчанию.Внутренний синтаксический анализатор Sax создает экземпляр XMLInputSource и передает его до XMLEntityManager.Класс XMLEntityManager выполняет всю работу, связанную с открытием соединения и получением вашего xml (или более похожего на html) документа:

URL location = new URL(expandedSystemId); 
URLConnection connect = location.openConnection();
... skip ...
stream = connect.getInputStream();

Если XmlInputSource является экземпляром HTTPInputSource, тогда XMLEntityManager устанавливаетсвойства HTTP-запроса.Однако для XMLInputSource подобной функциональности нет (что и есть в случае с SAXParser).

Полагаю, вам может помочь изменение парсера SAX на другую реализацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...