0

我有一个使用 XML 响应响应 HTTP GET 请求的服务器应用程序。我无法制作一个小型 Java 应用程序来获取此响应的内容。我在响应中尝试的每一种阅读,或者getContent(),或者你什么都没有返回。

我首先尝试了此处列出的示例: how to get url html contents to string in java

但是那些使用 InputStream 已弃用的 readLine() 方法。在上述情况下,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 + "&timestamp=" + 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.

然后我尝试了 Apache 的 HTTPClient,它也在正文中返回了 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>
4

1 回答 1

1

看起来 Ampache URL 格式错误,或者 Ampache 的 API 中存在错误。该请求适用于http://homeserver/ampache/server/xml.server.php?action=handshake,但不适用于带有身份验证详细信息的完整 URL。

于 2013-06-18T15:43:30.103 回答