我需要连接到代理服务器后面的solr服务器(?)。 我试过后(没什么特别的):
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。有人可以帮忙吗?
答案 0 :(得分:4)
我没有看到您在代码中尝试通过代理连接的位置,您在创建HttpSolrServer
时仅提供了solr网址。您可以在HttpClient
个HttpSolrServer
实例的同时提供自己的HttpClient
实例。您的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);
实例可以包含有关代理的信息。所需的代码应如下所示,您可以在creating中找到:
{{1}}
仔细查看您的问题,我认为您不需要使用代理进行连接。你的错误是关于https。查看http-components examples其他问题和答案,了解您需要做什么。您需要查看的httpclient版本是4.x。