我有以下 API 调用:
http://rollout.gr/api/?query={%22search%22:%22places%22,%22page%22:1}
此 API 调用在我的浏览器中正确执行。但是当我DefaultHttpClient
在我的 Android 应用程序中使用 a 来执行这个 url 时,我得到一个空响应。
我想问题是 HTTP url 中的 JSON 数据。因此,我想问一下在 Android 应用程序中处理此类 url 的正确方法是什么?
提前非常感谢!
荣誉不是有效的 URL 字符。浏览器足够用户友好,可以自动对它们进行 URL 编码,但 DefaultHttpClient 不是。从代码中使用的正确行是:
http://rollout.gr/api/?query=http://rollout.gr/api/?query=%7b%22search%22:%22places%22,%22page%22:1%7d
请注意荣誉 ( %7b
, %7d
) 的编码。
您的问题可能是这里的严格模式。我建议在线程或异步任务中执行 http 请求。严格模式不允许应用程序在 uithread 中执行 http reauest。也许您的控制台显示警告,因此您从 http 响应中得到 null 。
这个项目可能会解决您的问题:
不知道您的特定 HTTP 初始化代码,我将假设您没有提供明确的 JSON 接受标头。许多 REST 端点都需要这个。
httpget.setHeader("Accept", "application/json");