【问题标题】:Is there a library for making server requests (GET/POST) painless? [closed]是否有使服务器请求(GET/POST)无痛的库? [关闭]
【发布时间】:2015-08-01 21:11:34
【问题描述】:

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

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

  1. 使用 HttpURLConnection 类以及其他类(OutputStreamWriter、BufferedReader 等)编写一个可以从通用 url 下载信息的函数。
  2. 通过 URI 构建器正确构造 URL 对象,并指定 RequestMethod (GET/POST) 以及设置 RequestProperty 等其他事项。
  3. 通过详尽的 try-catch-finally 块正确管理错误。
  4. 解析下载的数据,可以是 XML 或 JSON(或其他)。

有时还有更多的事情要做,这使得从服务器获取可用信息的过程很痛苦。

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

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

【问题讨论】:

  • 请求站外资源被认为是 Stack Overflow 的题外话。话虽如此,欢迎您访问the Android Arsenal,那里有许多值得您考虑的库。
  • Spring 主要用于服务器应用程序。你会想专门看看 Spring Android。
  • 我有一个(不完整的)库列表:hgoebl.github.io/DavidWebb/#background
  • 谢谢大家。哦,CommonsWare,顺便说一句,我在您的书中找到了一个章节,您在其中讨论了这个主题(OkHttp,Retrofit,...)。太好了!

标签: java android rest networking httpurlconnection


【解决方案1】:

一年前我玩过他们的 api,我也使用了 Volley 库来做。该代码可在我的 GitHub 上的 repo 中找到。

https://github.com/tnovoselec/HrPrognoza

但是,我建议现在使用 Retrofit 库进行网络调用。它使用起来非常简单,而且非常强大。

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

【讨论】:

  • 所有答案都为我提供了很好的建议,但我决定接受这个,因为关于“改造”的建议。我不知道那个库,尽管它在开发人员中被广泛使用! (与 OkHttp 一起)。谢谢托米斯拉夫。
【解决方案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'

它将帮助您通过反射解析数据,如果您愿意,我可以附加示例

【讨论】:

    【解决方案3】:

    在这里询问工具是题外话,所以我不会给你任何建议。我会告诉你如何减少痛苦:

    • 创建一个为您处理请求的类
    • 这个类应该有准备带参数的请求、发送请求、处理错误和调用回调的方法
    • 使用此类发出请求
    • 如果你有特定的需求,从这个类继承另一个类

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

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

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

    【讨论】:

    • 也是有用的答案。当我有更多时间时,我会建立自己的图书馆。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-03-16
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    相关资源
    最近更新 更多