HTTP中的页面解析期间的HTTP错误503
今天我正在开发一个Java RMI服务器(也是客户端),它从页面获取信息并返回我想要的内容。我把代码放在这里。问题是,有时我传递给方法的URL会抛出一个IOException,它说明给定的url会导致503 HTTP错误。如果它总是这样,可能会很容易,但事情有时会出现。 我有这种方法结构,因为我解析的页面来自天气公司,我希望来自多个城市的信息,不仅仅是一个,所以一些城市在第一次机会时完美地工作,而其他一些城市则失败。有什么建议么?HTTP中的页面解析期间的HTTP错误503
public ArrayList<Medidas> parse(String url){
medidas = new ArrayList<Medidas>();
int v=0;
String sourceLine;
String content = "";
try{
// The URL address of the page to open.
URL address = new URL(url);
// Open the address and create a BufferedReader with the source code.
InputStreamReader pageInput = new InputStreamReader(address.openStream());
BufferedReader source = new BufferedReader(pageInput);
// Append each new HTML line into one string. Add a tab character.
while ((sourceLine = source.readLine()) != null){
if(sourceLine.contains("<tbody>")) v=1;
else if (sourceLine.contains("</tbody>"))
break;
else if(v==1)
content += sourceLine + "\n";
}
........................
........................ NOW THE PARSING CODE, NOT IMPORTANT
}
HTTP 500错误反映了服务器错误,所以它可能与您的客户端代码无关。 如果您的请求传递了无效参数,则会出现400错误。
503是“服务不可用”,并且可能在服务器超载且无法处理您的请求时由服务器发送。从可公开访问的服务器,可以解释不规律的行为。
编辑
建立在你的代码中的重传处理器,当您发现503阿帕奇HTTPClient可以自动为你做到这一点。
- 检查IOException异常是真的不MalformedURLException类。尝试打印出URL以验证错误的URL不会导致IOException。
- 你解析的文件有多大?也许你的JVM内存不足。
我认为这不是因为它有时起作用,有的则不起作用。该页面大约55000个字符,所以我认为这不是问题 – antonbalboa 2013-03-28 01:07:54
你如何将'String url'传递给方法?请提供示例网址。 – Jason 2013-03-28 01:10:06
哪一行抛出IOException? – Jason 2013-03-28 01:18:10
完成,这不是我的错。今天一切正常,我认为页面服务器已被修复。谢谢 – antonbalboa 2013-03-28 15:16:02