0

HTTP GET 要求に XML 応答で応答するサーバー アプリケーションがあります。この応答の内容を取得するための小さな Java アプリを作成するのに問題があります。私が応答に対して試みるあらゆる種類の読み取り、またはgetContent()、または whathaveyou は何も返しません。

ここにリストされている例を最初に試しました: Javaでurl htmlコンテンツを文字列に取得する方法

しかし、それらは非推奨の 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