从URL构建XML对象时获取文件的过早结束

时间:2018-04-14 14:12:44

标签: java xml scala sax

我正在尝试运行以下代码val podcastXml = XML.load(new URL(feed)),其中有问题的Feed是https://fourfingerdiscount.podbean.com/feed/

我可以在我的浏览器中加载Feed很好,但我得到了一个 当我尝试针对它运行该代码时error: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Premature end of file.

有趣的是,当我在浏览器中尝试curl供稿网址时,它是空的。

知道我在这里做错了吗?我觉得有一个配置选项,我不知何故。

另外值得一提的是,有些Feed工作正常,例如http://maximumfun.org/feeds/are.xml

1 个答案:

答案 0 :(得分:2)

从HTTPS网址读取并不像使用此new URL(feed)那样简单。它没有如此容易地获得所需的XML内容,而是空响应,因此SAXParseException

但是可以检索数据,其中一种方法是旧HttpsUrlConnection。但是也有许多包装库可以促进它,例如scalaj-http。有了它,您可以按以下步骤操作:

import scalaj.http.Http

val url = "https://fourfingerdiscount.podbean.com/feed/"
val xml = Http(url).execute(XML.load).body
// xml is a parsed scala.xml.Elem with the contents you were looking for