2017-07-19 93 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);