Question: Consider a client-server app, being the client an Android app. As you well know, every time we want to access/download information from a server there are some necessary/religious steps we must go through.

Let's say we want to use openweathermap.org APIs for retrieving weather information on the last 7 days. From a client (Android) perspective, it is necessary to:

1. Write a function that can download information from a generic url, using the HttpURLConnection class as well as others (OutputStreamWriter, BufferedReader and so on).
2. Properly construct an URL object through an URI builder, and specify a RequestMethod (GET/POST), as well as other things like setting a RequestProperty.
3. Manage errors properly through exhaustive try-catch-finally blocks.
4. Parse the downloaded data, that can be either XML or JSON (or others).

Sometimes there are even more things to do, making the process to get usable information from a server painful.

I am wondering if there exists any library that take care of this for us, maybe through simple methods with multiple constructors that would be called from a separate Thread or something.

I've heard of www.spring.io, but it seems like a HUGE project and feel like it would be the same as using a sledgehammer to crack a nut.

Answer: 
A year ago I played a bit with their api, and I also used a Volley library to do it. The code is available on my repo on GitHub.

<https://github.com/tnovoselec/HrPrognoza>

However, I would recommend using Retrofit library to make network calls nowadays. It's dead simple to use, and quite powerful.

<http://square.github.io/retrofit/>
use this

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

```

include by adding this to build.gradle:

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

```

its great and handles all above tasks except parsing, for parsing use,

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

```

it will help you parse data via reflection i can attach sample if you want