5

我是 Groovy 的新手,我正在尝试解析有效​​的休息资源和无效的休息资源。例如:

这段代码工作正常 -

def entity = new XmlSlurper().parse('http://api.twitter.com/1/users/show/slashdot.xml')
println entity.name()
println entity.screen_name.text()

当我运行它时,我得到输出:

user
slashdot

但是当我将无效的 url 传递给 xmlSlurper 时,就像这样

def entity = new XmlSlurper().parse('http://api.twitter.com/1/users/show/slashdotabc.xml')
println entity.name()
println entity.screen_name.text(

)

我收到此错误消息:

Caught: java.io.FileNotFoundException: http://api.twitter.com/1/users/show/slashdotabc.xml
    at xmltest.run(xmltest.groovy:1)

尽管 url 返回带有错误消息的哈希码(如下所示),但我想对其进行解析和显示。

<hash>
<request>/1/users/show/slashdotabc.xml</request>
<error>Not found</error>
</hash>

如何解析返回 404 但带有错误信息的 url?

任何帮助将不胜感激。

——感谢和问候,弗兰克·科沃特

4

1 回答 1

4

您想要查看的响应在 URL 连接errorStream而不是inputStream. 幸运的是,鉴于InputStream,XmlSlurper.parse也可以读取 an InputStream

errorStream这是一个在您没有获得 200 状态时切换到读取的示例:

def con = new URL("http://api.twitter.com/1/users/show/slashdotaxxxbc.xml").openConnection()
def xml = new XmlSlurper().parse(con.responseCode == 200 ? con.inputStream : con.errorStream)
于 2011-04-13T17:17:36.360 回答