gpt4 book ai didi

java - 如何捕获 "White spaces are required between publicId and systemId."错误

转载 作者:行者123 更新时间:2023-11-30 06:58:24 26 4
gpt4 key购买 nike

我有一个正在运行的 Java 应用程序,它正在收集 API 端点。 API 提供了我解析的 xml 文件。问题是我在某些文件中遇到了这个奇怪的错误

[Fatal Error] :1:55: White spaces are required between publicId and systemId.

导致应用程序挂起,尝试读取该文件。
我的主要问题是它没有抛出异常,所以我无法捕获它(要么删除它,要么尝试重新执行该过程)并且我没有得到该错误的代码行来自(哪里。当我尝试在浏览器上加载文件时,通常需要很长时间才能加载,但最终还是加载了。

我猜测问题出在文件获取上,就是这个方法

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;
}
}

最奇怪的是,如果我再次运行同一个文件,也许第二次它可能会正确处理它!
有什么办法可以克服这个问题,或者至少跳过这个文件并让程序做一些事情,而不是卡在那里!

编辑这是API respond

最佳答案

我希望有一个更优雅的解决方案,但我对此表示怀疑。我认为一个优雅的解决方案将依赖于解决为什么首先抛出此错误的根本问题。

这里使用的类是org.apache.commons.lang3.exception.ExceptionUtils

try {
JAXBContext jaxbContext = createJaxbContext();
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
JAXBElement<E> jaxbElement = unmarshaller.unmarshal(new StreamSource(fileInputStream), expectedClass);
} catch (UnmarshalException e) {
if (ExceptionUtils.getStackTrace(e.getLinkedException()).contains("White spaces are required between publicId and systemId.")) {
// exception handling
}
}

关于java - 如何捕获 "White spaces are required between publicId and systemId."错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41387897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com