groovy - 解析 xml 时出现问题

发布于 2024-11-01 15:45:10 字数 1000 浏览 0 评论 0原文

我是 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?

任何帮助将不胜感激。

-- 谢谢&问候, 弗兰克·科弗特

I am new to Groovy and I am trying to parse both a valid rest resource and an invalid one.
For example:

this code works fine -

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

when I run it, I get output:

user
slashdot

but when I pass an invalid url to xmlSlurper, like this

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

)

I get this error message:

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

Although the url returns an hash code (like below) with an error message which I would like to parse and display it.

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

How can I parse a url which returns a 404 but with error information?

Any help will be appreciated.

--
Thanks & Regards,
Frank Covert

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

当爱已成负担 2024-11-08 15:45:10

您想要查看的响应可在 URL 连接的 errorStream(而不是 inputStream)上找到。幸运的是,有了 InputStreamXmlSlurper.parse 也可以读取 InputStream

以下是当您没有获得 200 状态时切换到读取 errorStream 的示例:

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)

The response you want to see is available on the URL connection's errorStream instead of the inputStream. Fortunately, given the InputStream, XmlSlurper.parse can read an InputStream as well.

Here's a sample to switch to reading the errorStream when you don't get a 200 status:

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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文