获取URL内容

时间:2013-06-18 15:02:27

标签: java http url

我有一个服务器应用程序,它通过XML响应响应HTTP GET请求。我在制作一个小型Java应用程序时无法获取此响应的内容。我尝试了各种阅读,或者getContent(),或者什么都不返回。

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

但是那些使用InputStream的弃用的readLine()方法。在上面的例子中,read() / available()似乎总是表明没有什么可读的(它们分别返回-1和0),但是给出200响应代码。

任何其他网址(例如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 APIhttp://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>

1 个答案:

答案 0 :(得分:1)

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