Я новичок в Scala, поэтому я могу отказаться от этого, я хочу знать, является ли проблема моим кодом. С учетом Scala файла httpparse, упрощенного для:
object Http {
import java.io.InputStream;
import java.net.URL;
def request(urlString:String): (Boolean, InputStream) =
try {
val url = new URL(urlString)
val body = url.openStream
(true, body)
}
catch {
case ex:Exception => (false, null)
}
}
object HTTPParse extends Application {
import scala.xml._;
import java.net._;
def fetchAndParseURL(URL:String) = {
val (true, body) = Http request(URL)
val xml = XML.load(body) // <-- Error happens here in .load() method
"True"
}
}
который запускается с (URL-адрес не имеет значения, это пример шутки):
scala> HTTPParse.fetchAndParseURL("http://stackoverflow.com")
Результат неизменно:
java.io.IOException: Server returned HTTP response code: 503 for URL: http://www.w3.org/TR/html4/strict.dtd
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1187)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:973)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEnti...
Я видел поток по этому поводу в отношении Java, а также Запись в блоге W3C System Team о том, что вы не пытаетесь получить доступ к этому DTD через Интернет. Насколько я могу сказать, я также выделил ошибку для метода XML.load(), который является библиотечным методом Scala.
Мой вопрос: как я могу это исправить? Является ли это чем-то, что является продуктом моего кода (cribbed from Raphael Ferreira), по продукту какого-то Java-специфического, который мне нужно адресовать, как в предыдущем потоке, или что-то, что является Scala конкретным? Где этот вызов происходит, и это ошибка или функция? ( "Это я? Это она, верно?" )