groovy - 解析 xml 时出现问题
我是 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您想要查看的响应可在 URL 连接的
errorStream
(而不是inputStream
)上找到。幸运的是,有了InputStream
,XmlSlurper.parse
也可以读取InputStream
。以下是当您没有获得 200 状态时切换到读取
errorStream
的示例:The response you want to see is available on the URL connection's
errorStream
instead of theinputStream
. Fortunately, given theInputStream
,XmlSlurper.parse
can read anInputStream
as well.Here's a sample to switch to reading the
errorStream
when you don't get a 200 status: