【发布时间】:2017-04-29 11:45:06
【问题描述】:
我有一个从网站检索数据的 Java Spark 应用程序,如下所示:
while(true)
{
try{
connection = (HttpURLConnection) uRL.openConnection();
/* optional default is GET */
connection.setRequestMethod("GET");
/* add request header */
connection.setRequestProperty("User-Agent", USER_AGENT);
connection.getResponseCode();
connection.setReadTimeout(0);
/* Read the response code */
bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8));
break;
}
catch(Exception e){
LOGGER.error("Error in querying Wikipedia: "+e.getMessage());
continue;
}
}
response = new StringBuffer();
while ((inputLine = bufferedReader.readLine()) != null) {
response.append(inputLine);
response.append("\n");
}
bufferedReader.close();
此代码在 Windows 上运行良好。
但是,在具有 HTTP 和 HTTPS 代理服务器的 Centos 机器上,它会因连接超时而失败。我为应用程序的 HTTPS 代理设置了系统属性,并确保它适用于某些链接。但是,它不适用于其他一些人。
对于那些它不起作用的,我还在 linux 服务器上使用 wget 尝试了相同的 URL 并成功了。
失效的链接:
https://ar.wikipedia.org/w/api.php?action=query&format=xml&titles=%D9%82%D8%B1%D9%89&redirects&prop=pageprops|categories&cllimit=500
有效的链接:
https://ar.wikipedia.org/w/api.php?action=query&format=xml&list=allpages&apnamespace=14&apfilterredir=nonredirects&aplimit=500
【问题讨论】: