在Android中RESTful。我需要一个额外的图书馆吗?

时间:2014-10-21 09:00:52

标签: android rest http

我一直在研究我的应用程序应该与REST服务器连接以进行GET和POST操作的方式,很多人提到像Volley,RetroFit,RESTdroid这样的库......而其他人只使用Android中包含的HttpGet和HttpPost类。用户必须等到此GET和POST操作才能继续使用该应用程序,但这些操作都是单独完成的。图书馆有哪些优势?我真的需要吗? Android开发和使用REST对我来说是新事物,所以即使这个问题听起来也很奇怪,我不知道。

6 个答案:

答案 0 :(得分:1)

您确实可以编写自己的网络层,如果您想要练习并了解Android中的网络类如何工作,这可能是一个好主意。

或者,有许多库将抽象掉所有样板代码,并为您提供简单的错误处理,重试配置等。

这样您就可以专注于应用的其他部分。如果您不想要,请不要触摸网络或解析代码。使用Volley发出请求,并使用GSON将JSON响应绑定到您的对象,以便在ListView中进行演示。

答案 1 :(得分:0)

我建议您将此项目用作库:

https://github.com/matessoftwaresolutions/AndroidHttpRestService

这非常简单,我将它用于我的所有项目!它正在不断改进......

我已经开发了它,所以你可以不用问任何你需要的东西!!

我希望它有所帮助!!

答案 2 :(得分:0)

您不需要额外的库,但这些库可以极大地简化与此类操作相关的常见样板,例如调度,缓存,错误处理等。在使用特定的RESTful API时,通常也可以使用高级库,它根据API的功能而不是原始HTTP请求进行讨论。其中一些更高级别的包装器是手写的,而其他一些包装器(例如与Google Cloud Endpoints实现的API一起使用的包装器)是自动生成的。

(旁注:既然你提到用户必须等待,你真的应该设计你的应用程序,使用户不等待......使用SyncAdapter在用户要求之前预取数据并上传本地副本仍然需要尽可能写回云的数据,而不是立即发出请求以响应用户的操作,除非无法避免)。

答案 3 :(得分:0)

我主要使用Spring的Android项目来安装android中的RESTful服务,因为我熟悉来自不同项目的spring。但是,我也可以建议,volley和loopj也是处理Android中RESTful服务的不错选择。

  1. Spring Android
  2. Volley
  3. loopj
  4. 我希望这些图书馆可以帮助您完成项目!

答案 4 :(得分:0)

我真的需要一个吗?
否。

图书馆有哪些优势?
通常,这些库将使您更容易,更轻松地专注于您的任务以及您希望通过API调用实现的目标。

这些库为您提供了一个网络层,您只需要关注请求,参数和响应。您可以直接处理错误,因为它们会在响应中返回错误信息(如果有)。因此,您可以使用覆盖函数并以更简单的方式管理异常处理 回调会让你变得简单。

<强>例如
Android Asynchronous Http Client

AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.google.com", new AsyncHttpResponseHandler() {

    @Override
    public void onStart() {
        // called before request is started
    }

    @Override
    public void onSuccess(int statusCode, Header[] headers, byte[] response) {
        // called when response HTTP status is "200 OK"
    }

    @Override
    public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
        // called when response HTTP status is "4XX" (eg. 401, 403, 404)
    }

    @Override
    public void onRetry(int retryNo) {
        // called when request is retried
  }
});  

在这里,您可以覆盖足够的功能并准备好使用它。您不必管理默认的http连接。另一方面,如果您有自己的端到端客户端服务器设置,并且您绝对需要了解网络层的所有内容,那么DefaultHttpClient对您来说效果很好。

最好编写一个自定义的,扩展默认值,只是为了知道它是如何工作的。您可以随时转到库。

答案 5 :(得分:0)

有许多REST库可供使用。这些库基本上可以让您的生活更轻松。通过更简单,我的意思是在网络操作期间我们遇到来自服务器的大量响应,如404,200等,这些库基本上已经有一个实现来处理这些响应,因此我们不必担心它们。其中一些还会对您的请求进行排队,以防您有多个服务器请求等。

我个人觉得如果你想完全理解应用程序内部的内容,尝试在没有库的情况下进行操作......你肯定会更好地掌握应用程序,但这需要付出努力。

你可以使用Volley,它有很好的缓存功能,但对POST不太好。

改造很好。