【问题标题】:Issues performing a query to Solr via HttpClient using Solr 3.5 and HttpClient 4.2使用 Solr 3.5 和 HttpClient 4.2 通过 HttpClient 对 Solr 执行查询的问题
【发布时间】:2012-07-09 22:59:15
【问题描述】:

我正在尝试使用 HttpClient 查询我的本地 Solr 服务器,但我无法弄清楚为什么没有将参数添加到 GET 调用中。

我的代码是:

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();

我一无所获……有什么想法吗?提前感谢您的帮助!

【问题讨论】:

  • 我强烈推荐使用 Solrj 库:wiki.apache.org/solr/Solrj
  • 我最初使用的是 Solrj 库,但在尝试将 SolrDocumentList 转换为 json 字符串时遇到问题,这就是我采用这种方法的原因

标签: apache solr httpclient response


【解决方案1】:

据我所知,您无法将您的赞歌与请求联系起来。

那么,与其创建新的 HttpParams 对象并将其与请求相关联,不如尝试以下方法?

httpCclient.getParams().setParameter("q", query"); ....

【讨论】:

  • 不幸的是,这也不起作用。我最终从 URI 构造函数构造了 URI 并解码了查询(因为它有转义字符)。
【解决方案2】:

更简单的选择是使用我在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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多