【问题标题】:Get JSON from an HTTP Post to an Algolia server on Android从 HTTP Post 获取 JSON 到 Android 上的 Algolia 服务器
【发布时间】:2016-02-08 23:36:06
【问题描述】:

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

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

我有查询字符串参数:

  • x-algolia-api-key
  • x-algolia-application-id
  • x-algolia-agent

和表单数据参数

  • 查询
  • hitsPerPage
  • 方面

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 上的网络连接来说真的很新,任何帮助!

【问题讨论】:

  • http错误404是什么意思?
  • 我们看不到您确实在发送 json。请添加该代码。
  • '我有查询字符串参数:'。如果你 POST 没有查询字符串。
  • 您应该在答案中有 404 错误的详细信息,您也可以在您的 Algolia Dashboard 中查看它,因为它提供了对您上次 API 调用日志的访问权限。顺便说一句,有一个适用于 Android 的 API 客户端为你打包了所有这些,你为什么不使用它?
  • 请求标头不是查询参数。

标签: android httpurlconnection algolia


【解决方案1】:

您永远不应该直接向 Algolia 的服务器发出请求,因为您会丢失他们在 API 客户端中放置的所有 logic and optimizations

使用Android API Client,进行搜索查询很简单:

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

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

【讨论】:

    【解决方案2】:

    我个人使用 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);
    

    【讨论】:

      猜你喜欢
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多