1
Я использую SaxParser для разбора xml, который я получаю с сервера (OAI). Этот xml может генерировать другой запрос от меня на сервер, чтобы получить другой xml и так далее.Как уловить (http) код ответа с SaxParser.parse
Некоторые серверы могут понимать эти последующие запросы как атаку отказа в обслуживании и возвращать «код ответа HTTP: 503».
Как я могу получить код ответа?
Вот код, я использую:
try
{
InputSource is = new InputSource(uri);
is.setEncoding("UTF-8");
parser.parse(is, handler);
parsed = true;
}
catch (IOException ioException)
{
...here should happen the response code handling...
persistError("Error(IOException) in parsing: " + ioException.getMessage());
}
catch (SAXException saxException)
{
persistError("Error(SAXException) in parsing: " + saxException.getMessage());
// we do not retry to parse if the error is a parsing error
retry = RETRY_FETCH_URL + 1;
}
Парсеры - это последнее место, где вы хотите «поймать» веб-исключения, если исключение не будет возвращено как XML, и вы хотите его проанализировать. Вы пытались поймать исключение на уровне HTTP-запроса? Логика обычно протекает вдоль строк, если HTTP-ответ! = 200 -> сделать что-то, чтобы справиться с этим. Else -> проанализируйте ответ. Вы должны иметь возможность проверить код ответа HTTP, просто взглянув на возвращенный заголовок из HTTP-запроса, вместо того, чтобы анализировать его. – FloppyDisk