【发布时间】:2016-12-29 22:11:49
【问题描述】:
我有一个正在收集 API 端点的有效 Java 应用程序。 API 提供我解析的 xml 文件。问题是我在某些文件中遇到了这个奇怪的错误
[致命错误]:1:55:publicId 和 系统ID。
导致应用程序挂起,试图读取该文件。
我的主要问题是它没有抛出异常,所以我无法捕获它(要么放弃它,要么尝试重新执行该过程)而且我没有得到一行代码表明这个错误是来自(哪里。
当我尝试在浏览器上加载文件时,通常需要很长时间才能加载,但最终会加载。
我猜问题出在文件获取上,就是这个方法
public String getData(String url){
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(url);
// add request header
request.addHeader("User-Agent", "MySuperUserAgent");
try {
HttpResponse response = httpClient.execute(request);
BufferedReader rd;
try{
rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent()));
}catch(NullPointerException npe){
return null;
}catch(Exception BRE){
return null;
}
String line = "";
HttpEntity entity = response.getEntity();
if (entity != null) {
line=EntityUtils.toString(entity);
}
httpClient.close();
rd.close();
return line.replace("", "");
} catch (UnsupportedOperationException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
} catch (NullPointerException e){
return null;
} catch (InterruptedException e) {
e.printStackTrace();
return null;
}
}
最奇怪的是,如果我再次运行同一个文件,也许第二次它可能会正确处理它!
有什么办法可以克服这个问题,或者至少跳过这个文件,让程序做点什么,而不是挂在那里!
编辑 这是apirespond
【问题讨论】:
-
我们能看到这个xml文档吗?
-
@Aaron 链接到已编辑问题的文件
-
嗯很奇怪,看看这个帖子:stackoverflow.com/questions/16200291/…
-
@Aaron 我会看看你提到的帖子,但事实证明问题不在于获取文件!它必须在解析它,但现在我没有得到同样的错误,所以无法检查它!
-
嗯,这很奇怪,我希望我能更多地了解这个话题以便提供帮助:/
标签: java xml-parsing