Solrj IOException возник при разговоре с сервером

Я использую базовую аутентификацию. Моя версия Solr 4.1. Я могу получить результаты запроса, но когда я пытаюсь проиндексировать документы, я получаю следующее сообщение об ошибке:

org.apache.solr.client.solrj.SolrServerException: IOException occured when talking to server at: http://192.168.0.1:8983/solr/my_core
    at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:416)
    at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:181)
    at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:117)
    at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:116)
    at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:102)
    at warningletter.Process.run(Process.java:128)
    at warningletter.WarningLetter.parseListPage(WarningLetter.java:81)
    at warningletter.WarningLetter.init(WarningLetter.java:47)
    at warningletter.WarningLetter.main(WarningLetter.java:21)
Caused by: org.apache.http.client.ClientProtocolException
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:822)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:732)
    at org.apache.solr.client.solrj.impl.HttpSolrServer.request(HttpSolrServer.java:353)
    ... 8 more
Caused by: org.apache.http.client.NonRepeatableRequestException: Cannot retry request with a non-repeatable request entity.
    at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:625)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:464)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
    ... 11 more

Это мой фрагмент кода:

DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getCredentialsProvider().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("user", "password"));
HttpSolrServer server = new HttpSolrServer("http://192.168.0.1:8983/solr/warning_letter/", httpclient);
SolrInputDocument solrDoc = new SolrInputDocument();
solrDoc.addField("id", "id1");
solrDoc.addField("letter", "letter");
server.add(solrDoc);
server.commit();

Что я делаю не так?


person m3rg    schedule 18.05.2013    source источник


Ответы (1)


Хитрость заключается в использовании упреждающей аутентификации, чтобы избежать необходимости повторять запрос после отправки «неавторизованного» ответа. Вот пример упреждающей базовой аутентификации с помощью Apache HttpClient 4

person bomaboom    schedule 26.07.2013