我搜索了用于 Android 开发的良好 REST/HTTP 客户端,但没有找到满足我需求的东西。
现在我有一个问题。有没有在 android 项目中重用 HTTP 客户端对象的好方法?
如果有一个中心位置(可能是静态类?)来访问 httpclient 以执行请求(异步),那就太好了...
如何在 android 项目中执行此操作?
我的凭据也是如此。(我使用基本身份验证,不想将凭据从活动传递到活动)
我搜索了用于 Android 开发的良好 REST/HTTP 客户端,但没有找到满足我需求的东西。
现在我有一个问题。有没有在 android 项目中重用 HTTP 客户端对象的好方法?
如果有一个中心位置(可能是静态类?)来访问 httpclient 以执行请求(异步),那就太好了...
如何在 android 项目中执行此操作?
我的凭据也是如此。(我使用基本身份验证,不想将凭据从活动传递到活动)
我会推荐你 RoboSpice:
RoboSpice 是一个模块化的 android 库,可以轻松编写异步网络请求。
它确实有一个缓存管理器,并且作为服务工作,对我来说,这比普通的 AsyncTasks 更好。
https://github.com/octo-online/robospice
此外,您不应该接触R 类,它是从您的资源自动构建的。
我建议检查
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();
}
}
如前所述,RoboSpice 是一个非常不错的选择。如果您只想保持本地资源与远程数据同步,您可以使用RestDroid这是一个“面向资源”的库来处理异步 REST 请求。