0

我有以下 API 调用:

http://rollout.gr/api/?query={%22search%22:%22places%22,%22page%22:1}

此 API 调用在我的浏览器中正确执行。但是当我DefaultHttpClient在我的 Android 应用程序中使用 a 来执行这个 url 时,我得到一个空响应。

我想问题是 HTTP url 中的 JSON 数据。因此,我想问一下在 Android 应用程序中处理此类 url 的正确方法是什么?

提前非常感谢!

4

3 回答 3

1

荣誉不是有效的 URL 字符。浏览器足够用户友好,可以自动对它们进行 URL 编码,但 DefaultHttpClient 不是。从代码中使用的正确行是:

http://rollout.gr/api/?query=http://rollout.gr/api/?query=%7b%22search%22:%22places%22,%22page%22:1%7d

请注意荣誉 ( %7b, %7d) 的编码。

于 2012-11-10T15:23:03.007 回答
0

您的问题可能是这里的严格模式。我建议在线程或异步任务中执行 http 请求。严格模式不允许应用程序在 uithread 中执行 http reauest。也许您的控制台显示警告,因此您从 http 响应中得到 null 。

这个项目可能会解决您的问题:

http://loopj.com/android-async-http/

于 2012-11-10T13:39:14.923 回答
0

不知道您的特定 HTTP 初始化代码,我将假设您没有提供明确的 JSON 接受标头。许多 REST 端点都需要这个。

httpget.setHeader("Accept", "application/json");
于 2012-11-10T14:11:21.537 回答