我是 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 的Stack Overflow 线程,以及W3C 的系统团队博客条目关于不尝试通过网络访问此 DTD。我还将错误隔离到 XML.load() 方法,据我所知,这是一个 Scala 库方法。
我的问题:我该如何解决这个问题?这是我的代码的副产品(摘自Raphael Ferreira 的帖子),我需要在上一个线程中解决的 Java 特定的副产品,还是 Scala 特定的副产品?这个调用发生在哪里,是错误还是功能?(“是我吗?是她,对吧?”)