Когда я отправляю запросы в Solr, используя solrj, я иногда получаю исключение SolrException. Когда я перебираю исключение, он просто говорит «Неверный запрос» и дает код возврата HTTP (который равен 400).
Когда я взял URL-адрес запроса и поместил его в браузер, я смог увидеть более подробное сообщение об ошибке. В браузере отображается сообщение об ошибке, в котором говорится, что одно из имен полей недопустимо.
Я хотел бы иметь возможность захватить это внутри моего файла журнала. Я смог перехватить это, скопировав все параметры в запрос POST HTTP-клиента Apache (я использую POST, а не GET, потому что GET сделал URL-адрес слишком длинным) и повторно выполняя запрос, но это неэффективно. Есть ли способ получить сообщение об ошибке из SolrException напрямую?
Вот что я делаю:
catch (SolrServerException e) {
if(e.getRootCause() instanceof SolrException) {
SolrException ee = (SolrException) e.getRootCause();
HttpClient client = new HttpClient();
PostMethod method = new PostMethod(SOLR_URL);
// copy params over
Iterator<String> iter = request.getParams().getParameterNamesIterator();
while(iter.hasNext()) {
String p = iter.next();
method.setParameter(p, request.getParams().get(p));
}
int statusCode;
try {
// re execute and display the error message
statusCode = client.executeMethod(method);
logger.error(method.getResponseBodyAsString());
} catch (Exception e1) {
// TODO Auto-generated catch block
}
}