是否有使服务器请求 (GET/POST) 无痛的库?
Is there a library for making server requests (GET/POST) painless?
考虑一个客户端-服务器应用程序,客户端是一个 Android 应用程序。如您所知,每次我们想要 access/download 来自服务器的信息时,我们都必须经过一些 necessary/religious 步骤。
假设我们要使用 openweathermap.org API 来检索过去 7 天的天气信息。从客户(Android)的角度来看,有必要:
- 使用 HttpURLConnectionclass 以及其他(OutputStreamWriter、BufferedReader 等)编写一个可以从通用 url 下载信息的函数。
- 通过 URI 构建器正确构建 URL 对象,并指定 RequestMethod (GET/POST),以及设置 RequestProperty 等其他内容。
- 通过详尽的 try-catch-finally 块正确管理错误。
- 解析下载的数据,可以是XML或JSON(或其他)。
有时甚至还有更多事情要做,这使得从服务器获取可用信息的过程非常痛苦。
我想知道是否存在任何库可以为我们处理这个问题,也许是通过具有多个构造函数的简单方法,这些构造函数可以从单独的线程或其他东西调用。
我听说过www.spring.io,但它似乎是一个巨大的工程,感觉就像用大锤敲螺母一样。
使用这个
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'
它将帮助您通过反射解析数据,如果您需要,我可以附上示例
一年前我用他们的 api 玩了一下,我也用了一个 Volley 库来做。该代码可在我的 GitHub.
仓库中找到
https://github.com/tnovoselec/HrPrognoza
不过,我现在推荐使用 Retrofit 库来进行网络调用。它使用起来非常简单,而且非常强大。
这里求工具是题外话,就不给大家推荐了。我会告诉你如何减少痛苦:
- 创建一个 class 来为您处理请求
- 这个 class 应该有准备带参数的请求、发送请求、处理错误和调用回调的方法
- 使用此 class 提出请求
- 如果你有特定的需求,从这个class继承另一个class
因此,如果您创建一个 RequestHandler
,它能够准备参数、发送 get 或 post 请求并调用回调(可能通过反射),那么您就有了核心逻辑以后可以无痛使用。
稍后,如果您必须向给定的 API 发送请求,例如 openweathermap,那么您可以创建一个 OpenWeatherMapRequestHandler
,其中 extends RequestHandler
。
当然,您可以使用其他工具让您的生活更简单,但这是您需要的逻辑。
考虑一个客户端-服务器应用程序,客户端是一个 Android 应用程序。如您所知,每次我们想要 access/download 来自服务器的信息时,我们都必须经过一些 necessary/religious 步骤。
假设我们要使用 openweathermap.org API 来检索过去 7 天的天气信息。从客户(Android)的角度来看,有必要:
- 使用 HttpURLConnectionclass 以及其他(OutputStreamWriter、BufferedReader 等)编写一个可以从通用 url 下载信息的函数。
- 通过 URI 构建器正确构建 URL 对象,并指定 RequestMethod (GET/POST),以及设置 RequestProperty 等其他内容。
- 通过详尽的 try-catch-finally 块正确管理错误。
- 解析下载的数据,可以是XML或JSON(或其他)。
有时甚至还有更多事情要做,这使得从服务器获取可用信息的过程非常痛苦。
我想知道是否存在任何库可以为我们处理这个问题,也许是通过具有多个构造函数的简单方法,这些构造函数可以从单独的线程或其他东西调用。
我听说过www.spring.io,但它似乎是一个巨大的工程,感觉就像用大锤敲螺母一样。
使用这个
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'
它将帮助您通过反射解析数据,如果您需要,我可以附上示例
一年前我用他们的 api 玩了一下,我也用了一个 Volley 库来做。该代码可在我的 GitHub.
仓库中找到https://github.com/tnovoselec/HrPrognoza
不过,我现在推荐使用 Retrofit 库来进行网络调用。它使用起来非常简单,而且非常强大。
这里求工具是题外话,就不给大家推荐了。我会告诉你如何减少痛苦:
- 创建一个 class 来为您处理请求
- 这个 class 应该有准备带参数的请求、发送请求、处理错误和调用回调的方法
- 使用此 class 提出请求
- 如果你有特定的需求,从这个class继承另一个class
因此,如果您创建一个 RequestHandler
,它能够准备参数、发送 get 或 post 请求并调用回调(可能通过反射),那么您就有了核心逻辑以后可以无痛使用。
稍后,如果您必须向给定的 API 发送请求,例如 openweathermap,那么您可以创建一个 OpenWeatherMapRequestHandler
,其中 extends RequestHandler
。
当然,您可以使用其他工具让您的生活更简单,但这是您需要的逻辑。