2017-07-19 34 views
0

我试图通过使用Java ModifiableSolrParams执行导入:Solr的进口安全证书

你能请点我就如何安全凭据(用户名/密码)添加到触发正确的方向或参考进口。

当前代码

SolrServer server = new HttpSolrServer(baseurl); 

    ModifiableSolrParams params = new ModifiableSolrParams(); 
    params.set("command", "full-import"); 
    params.set("clean", "true"); 
    params.set("commit", "true"); 

    QueryRequest request = new QueryRequest(params); 
    request.setPath("/dataimport"); 

    server.request(request); 

回答

1

您需要HttpRequestInterceptor添加到您的HttpServer。这个拦截器将能够为每个请求添加授权头。

对于云Solr,允许执行此操作的util类是HttpClientUtil。你可以从这个类开始,或者检查HttpSolrServer实际上是否存在HttpClient。

+0

将检查这一点。我看到很多具有抢先认证的解决方案,但似乎无法使其发挥作用。我在以上解决方案中添加了以下参数\t params.set(HttpClientUtil.PROP_BASIC_AUTH_USER,“USER”); \t params.set(HttpClientUtil.PROP_BASIC_AUTH_PASS,“PASSWORD”);但我收到以下错误 – user3286012

+0

这是我得到的错误:异常在线程“主”java.lang.NoSuchMethodError:org.apache.solr.common.SolrException $ ErrorCode.getErrorCode(I)Lorg/apache/solr /普通/ SolrException $错误代码; – user3286012

1

我偏离了Solrj,转而采用这种方法。

HttpClient Client = new DefaultHttpClient(); 
String userpass = usr + ":" + pwd; 

HttpPost httpGet = new HttpPost(dataimport_cmd); 
String encoding = 
DatatypeConverter.printBase64Binary(userpass.getBytes("UTF-8")); 
httpGet.setHeader("Authorization", "Basic " + encoding); 

    Client.execute(httpGet);