У меня есть серверное приложение, которое отвечает на запросы HTTP GET с ответом XML. У меня возникли проблемы с созданием небольшого приложения Java для получения содержимого этого ответа. Каждый вид чтения я пытаюсь ответить, или getContent()
, или whathaveyou ничего не возвращает.Получение содержимого URL-адреса
я впервые попробовал примеры, перечисленные здесь: how to get url html contents to string in java
Но те, метод используют устаревшие ReadLine() из InputStream. В приведенных выше случаях read()
/available()
, похоже, всегда указывают, что читать нечего (они возвращают -1 и 0 соответственно), но дают код ответа 200.
Любой другой URL (http://www.google.com/humans.txt, например) работает нормально.
Итак, я нашел более соответствующую ссылку здесь: How to read XML response from a URL in java?
Который дал мне:
String urlString = new String("http://homeserver/ampache/server/xml.server.php?action=handshake&auth=" + hash + "×tamp=" + timestamp + "&version=3600013&user=" + user");
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = db.parse(new URL(urlString).openStream());
System.out.println(doc.toString());
Но, похоже, у меня та же проблема:
[Fatal Error] :1:1: Premature end of file.
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Premature end of file.
Тогда я попробовал HTTPClient Apache, который также возвращал zilch в теле, но с кодом ответа 200.
URL-адрес моей установки Ampache. Это их XML API: http://homeserver/ampache/server/xml.server.php?action=handshake&auth...
. Этот URL работает отлично от браузера, и возвращает то, что я ожидал в этот момент:
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<error code="403"><![CDATA[Unauthorized access attempt to API - ACL Error]]>
</error>
</root>
Не могли бы вы предоставить кому-то код? Без кода трудно сказать, что вы делаете неправильно. –
@UwePlonus, Добавлено. – Nick