2012-07-09 35 views
0

我正在嘗試使用HttpClient查詢我的本地Solr服務器,我無法弄清楚爲什麼參數未被添加到GET調用中。使用Solr 3.5和HttpClient 4.2通過HttpClient執行對Solr查詢的問題

我這樣做的代碼是:

HttpRequestBase request = new HttpGet("http://localhost:8080/solr/select"); 

HttpParams params = new BasicHttpParams(); 
params.setParameter("q", query); 
params.setParameter("start", String.valueOf(start)); 
params.setParameter("rows", String.valueOf(rows)); 

request.setParams(params); 

HttpClient httpClient = new DefaultHttpClient(); 
HttpResponse response = httpClient.execute(request); 

HttpEntity entity = response.getEntity(); 
InputStream is = entity.getContent(); 

return stringToStreamConversion(is); //500 error, NullPointerException, response is empty 

我試圖在看到我會得到,並試圖找出其中的問題是,希望返回幾件事情。我終於意識到,我只是得到回http://localhost:8080/solr/select當我回到

return request.getURI().toURL().toString();

我想不通,爲什麼沒有得到補充的參數。如果我做

return request.getQuery();

我得不到任何回報...任何想法?我在這裏先向您的幫助表示感謝!

+0

我強烈推薦使用Solrj庫:http://wiki.apache.org/solr/Solrj – 2012-07-10 20:01:08

+0

我剛開始使用Solrj庫時遇到問題,試圖將SolrDocumentList轉換爲json字符串,這就是爲什麼我去了用這種方法 – James 2012-07-10 21:02:48

回答

0

從我所看到的您無法將您的paeans與請求關聯起來。

因此,不是創建一個新的HttpParams對象並將其與請求關聯起來,您可以嘗試以下方法嗎?

httpCclient.getParams()的setParameter( 「Q」,查詢「); ....

+0

不幸的是,也沒有工作。我結束了從URI構造URI的構造並解碼查詢(因爲它已經轉義了字符)。 – James 2012-07-10 21:01:40

0

簡單的選擇是使用我HTTPPostScheduler使用的方法,像這樣:

URL url = new URL(completeUrl); 
HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 

conn.setRequestMethod("POST"); 
conn.setRequestProperty("type", "submit"); 
conn.setDoOutput(true); 

// Send HTTP POST 
conn.connect();