2012-10-09 28 views
2

我需要连接到代理服务器(?)后面的solr服务器。 下面我想没什么特别的:Solr - 使用Httpclient实例化HttpSolrServer

SolrServer server = new HttpSolrServer("https://urltosolr/solr"); 
try { 
    SolrPingResponse pingResponse = server.ping(); 
} catch (SolrServerException e) { 
    .... 
} 

堆栈跟踪:

org.apache.solr.client.solrj.SolrServerException: IOException occured when talking to server at: https://urltosolr/solr 
... 
Caused by: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated 

之后,我试过其他的构造函数HttpSolrServer,但我不知道如何正确设置用户名和密码的HttpClient。谁能帮忙?

+1

可能与以下相关:http://stackoverflow.com/questions/9068759/solr-running-on-https-solrj-connection-issue – Dan

回答

4

我没有看到你要通过代码连接的位置,你只在创建HttpSolrServer时提供了solr url。您可以提供您自己的HttpClient实例,而creating您的HttpSolrServer实例。您的HttpClient实例可以包含有关代理的信息。所需的代码应该是下面,你可以在http-components examples发现:

DefaultHttpClient httpclient = new DefaultHttpClient(); 
HttpHost proxy = new HttpHost(proxyHost, proxyPort, "http"); 
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); 
httpclient.getCredentialsProvider().setCredentials(
        AuthScope.ANY, 
        new UsernamePasswordCredentials(username, password)); 
SolrServer solrServer = new HttpSolrServer(solrUrl, httpclient); 

你的问题看多了,我不认为你需要使用代理进行连接。你的错误是关于https。看看this其他问题和答案,看看你需要做什么。您需要查看的httpclient版本是4.x.

相关问题