我正在开发一个程序,该程序查询并打印出来自当地交通当局的开放数据,这些数据以 XML 响应的形式返回。
通常,当有巴士计划在接下来的几个小时内运行(以及其他典型情况)时,页面生成的 XML 响应会被java.net.URLConnection.getInputStream()
函数正确处理,之后我可以打印单独的结果。
问题是当公共汽车没有运行时,或者当我的查询被发送到交通当局的网络服务器后出现其他问题时。当当局开发他们的服务时,他们想出了自己独特的错误响应代码,这些代码也以 XML 形式发送。例如,这些错误消息之一可能如下所示:
<Error xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Code>3005</Code>
<Message>Sorry, no stop estimates found for given values.</Message>
</Error>
(此代码和类似代码是我在这种情况下从运输当局收到的所有代码。)
但是,它的URLConnection.getInputStream()
一些兄弟姐妹似乎无法将此自定义代码解释为“有效”响应,我可以处理并打印为错误消息。相反,他们给了我一个更一般的HTTP/1.1 404 Not Found
错误。这个问题级联到我的程序中,然后打印出java.io.FileNotFoundException
指向有问题的输入流的错误。
因此,我的问题有两个:
1. 有没有办法使用 Java 中可用的插件来检索、解析和打印由 Web 服务发送的自定义 XML 格式的错误代码?
2. 如果上述方法不可行,我应该使用或开发哪些其他工具来处理所描述的此类自定义代码?