是否有一个用于使服务器请求(GET / POST)无痛的库?

时间:2015-08-01 21:11:35

标签: java android rest networking httpurlconnection

考虑一个客户端 - 服务器应用程序,作为Android应用程序的客户端。众所周知,每次我们想要从服务器访问/下载信息时,我们都必须经历一些必要/宗教的步骤。

我们假设我们想使用openweathermap.org API检索过去7天的天气信息。从客户端(Android)的角度来看,有必要:

  1. 编写一个可以从通用URL下载信息的函数,使用HttpURLConnection类以及其他类(OutputStreamWriter,BufferedReader等)。
  2. 通过URI构建器正确构建URL对象,并指定RequestMethod(GET / POST),以及设置RequestProperty等其他内容。
  3. 通过详尽的try-catch-finally块正确管理错误。
  4. 解析下载的数据,可以是XML或JSON(或其他)。
  5. 有时甚至还有更多事情要做,使得从服务器获取可用信息的过程变得痛苦。

    我想知道是否存在任何为我们处理这个问题的库,可能是通过带有多个构造函数的简单方法,这些构造函数将从一个单独的Thread或其他东西中调用。

    我听说过www.spring.io,但这似乎是一个巨大的项目,感觉就像用大锤敲打坚果一样。

3 个答案:

答案 0 :(得分:2)

使用此

https://github.com/mcxiaoke/android-volley

将此添加到build.gradle:

compile 'com.mcxiaoke.volley:library:1.0.17'

它非常棒并且处理除解析之外的所有上述任务,用于解析使用,

compile 'com.google.code.gson:gson:2.3.1'

它将帮助您通过反射解析数据我可以附加样本(如果您需要)

答案 1 :(得分:2)

一年前我用他们的api玩了一下,我还用了一个Volley库来做。代码可以在GitHub上的我的回购中找到。

https://github.com/tnovoselec/HrPrognoza

但是,我建议现在使用Retrofit库进行网络通话。它使用简单,功能强大。

http://square.github.io/retrofit/

答案 2 :(得分:1)

在这里要求工具是偏离主题的,所以我不会给你任何建议。我会告诉你如何做到这一点不那么痛苦:

  • 创建一个将处理请求的类
  • 此类应具有使用参数准备请求,发送请求,处理错误和调用回调的方法
  • 使用此课程提出请求
  • 如果您有特定需求,请从此类继承另一个类

所以,如果你创建一个OpenWeatherMapRequestHandler,它能够准备参数,发送get或post请求并调用回调(可能通过反射),那么你就拥有了核心逻辑,以后可以轻松使用

稍后,如果您必须向给定的API发送请求,例如openweathermap,那么您可以创建一个extends RequestHandler {{1}}。

当然,您可以使用其他工具简化您的生活,但这是您需要的逻辑。