1

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

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

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

如何在 android 项目中执行此操作?

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

4

3 回答 3

2

我会推荐你​​ RoboSpice:

RoboSpice 是一个模块化的 android 库,可以轻松编写异步网络请求。

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

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

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

于 2013-03-09T21:58:30.893 回答
1

我建议检查

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();
    }
}
于 2013-03-09T22:01:27.357 回答
0

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

于 2013-03-18T11:11:02.547 回答