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 + "×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.
次に、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>