2

不确定如何在 Android 中使用 Java 正确地将 POST 查询的标头组合到 Algolia 服务器。

我通过在 Chrome 的开发控制台中记录网络信息获得了有关请求标头的所有信息

我有查询字符串参数:

  • x-algolia-api-key
  • x-algolia-应用程序 ID
  • x-algolia-代理

和表单数据参数

  • 询问
  • 每页点击数
  • 刻面

不工作的Android代码:

URL url = new URL(urlString);
HttpURLConnection con = (HttpURLConnection) url.openConnection();

con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
con.setRequestProperty("accept", "application/json");
con.setRequestProperty("Connection", "Keep-Alive");

con.setRequestProperty("query", queryString);
con.setRequestProperty("hitsPerPage", "20");
con.setRequestProperty("facets", "*");


con.setUseCaches(false);
con.setDoInput(true);
con.setDoOutput(true);

这一直返回 404 错误,但可能设置不正确,对于 Android 上的网络连接来说真的很新,任何帮助!

4

2 回答 2

4

你永远不应该直接向 Algolia 的服务器发出请求,因为你会失去他们在 API 客户端中放置的所有逻辑和优化。

使用Android API 客户端,进行搜索查询很简单:

Index index = new APIClient("YourApplicationID", "YourAPIKey")
        .initIndex("YourIndexName");
JSONObject result = index.search(new Query(queryString)
        .setFacets("*").setHitsPerPage(20));

但是看看InstantSearch Android,Algolia 构建搜索界面的库。使用它会比 API Client 更容易、更快、更安全。

于 2017-10-16T18:58:59.803 回答
3

我个人使用 Algolia PHP API 客户端(在github 上)来执行搜索查询,这有助于我不必担心 REST 规范。这使得事情更容易集成到 Android 应用程序中,而且还集成了一种重试机制,可在网络问题的情况下提高设备与 API 之间的连接可靠性。

相同的搜索查询如下所示:

APIClient client = new APIClient("YourApplicationID", "YourAPIKey");
Index index = client.initIndex("YourIndexName");
index.searchASync(new Query(queryString), this)
    .setFacets("*", this)
    .setNbHitsPerPage(20), this);
于 2015-11-16T21:35:19.293 回答