【问题标题】:Android App and REST APIAndroid 应用程序和 REST API
【发布时间】:2013-03-09 21:41:19
【问题描述】:

我搜索了用于 Android 开发的良好 REST/HTTP 客户端,但没有找到满足我需求的东西。

现在我有一个问题。有没有在 android 项目中重用 HTTP 客户端对象的好方法?

如果有一个中心位置(可能是静态类?)来访问 httpclient 以执行请求(异步)会很好......

如何在 android 项目中做到这一点?

我的凭据也是如此。 (我使用基本身份验证,不想将凭据从活动传递到活动)

【问题讨论】:

  • 您是提供 JSON 内容的 REST 服务吗?
  • 是的,我使用 JSON 内容。顺便说一句:对不起,我不是指 R 类(我指的是资源,但它们是 xml 文件......所以......:P)

标签: android rest httpclient


【解决方案1】:

我会推荐你​​ RoboSpice:

RoboSpice 是一个模块化的 android 库,使编写异步 网络请求很容易。

它确实有一个缓存管理器,并且作为服务工作,对我来说,这比普通的 AsyncTasks 更好。

https://github.com/octo-online/robospice

另外,您应该不要触摸 R 类,它是从您的资源自动构建的。

【讨论】:

  • “你不应该碰R类”>
【解决方案2】:

建议去看看

https://github.com/posco2k8/rest_loader_tutorial


我还建议对RESTLoader.RESTResponse data 进行小的改进更改,以便data 成为这种情况下的最终数据List<String>,以便解析移至 acync 加载程序并避免 UI 线程上的延迟。添加代码指出更改建议。

@Override
public void onLoadFinished(Loader<RESTLoader.RESTResponse> loader, RESTLoader.RESTResponse data) {
    int    code = data.getCode();
    String json = data.getData(); // <-- (change) this should be the final data

    // Check to see if we got an HTTP 200 code and have some data.
    if (code == 200 && !json.equals("")) {

        // For really complicated JSON decoding I usually do my heavy lifting
        // Gson and proper model classes, but for now let's keep it simple
        // and use a utility method that relies on some of the built in
        // JSON utilities on Android.
        List<String> tweets = getTweetsFromJson(json); // <-- (change) that parse move to loader

        // Load our list adapter with our Tweets.
        mAdapter.clear();
        for (String tweet : tweets) {
            mAdapter.add(tweet);
        }
    }
    else {
        Toast.makeText(this, "Failed to load Twitter data. Check your internet settings.", Toast.LENGTH_SHORT).show();
    }
}

【讨论】:

    【解决方案3】:

    如前所述,RoboSpice 是一个非常好的选择。如果您只想保持本地资源与远程数据同步,您可以使用RestDroid,这是一个“面向资源”的库来处理异步 REST 请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-11
      • 1970-01-01
      • 2018-03-29
      • 2017-08-07
      • 2016-03-15
      • 2014-05-02
      • 2020-02-19
      • 2019-01-07
      相关资源
      最近更新 更多