Solr Change CommonsHttpSolrServer到HttpSolrServer

Ant*_*der 5 solr solrj

对于solr 3.5中的基本身份验证,我使用以下代码,

String url = "http://192.168.192.11:8080/solr/FormResponses";
CommonsHttpSolrServer server = new CommonsHttpSolrServer( url );
String username = "user";
String password = "user123";
Credentials defaultcreds = new UsernamePasswordCredentials(username, password);
server.getHttpClient().getState().setCredentials(AuthScope.ANY, defaultcreds);
server.getHttpClient().getParams().setAuthenticationPreemptive(true);
Run Code Online (Sandbox Code Playgroud)

在solr 4.0 CommonsHttpSolrServer中不可用,所以我想用它替换它 HttpSolrServer.任何人都可以帮我解决这个问题吗?

Par*_*ade 7

更改代码如下:

import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.solr.client.solrj.impl.HttpSolrServer;

String url = "http://192.168.192.11:8080/solr/FormResponses";
HttpSolrServer server = new HttpSolrServer( url );
DefaultHttpClient client = (DefaultHttpClient) server.getHttpClient();

UsernamePasswordCredentials defaultcreds = new UsernamePasswordCredentials("user", "user123");
client.getCredentialsProvider().setCredentials(AuthScope.ANY, defaultcreds);
Run Code Online (Sandbox Code Playgroud)

对于server.getHttpClient().getParams().setAuthenticationPreemptive(true)HttpClient 4,您可以使用此处描述的解决方案.

  • 为你的效果+1.谢谢,最后我找到了解决方案 (2认同)

Ant*_*der 2

终于我自己找到了答案

String url = "http://192.168.192.11:8080/solr/FormResponses";
DefaultHttpClient httpclient = new DefaultHttpClient();
    httpclient.getCredentialsProvider().setCredentials(
    AuthScope.ANY, new UsernamePasswordCredentials("user", "user123"));
SolrServer solrServer = new HttpSolrServer(url, httpclient);
Run Code Online (Sandbox Code Playgroud)