An HTTP example

Any learning is not complete until and unless we apply it to a real-time scenario. So far, you have learned many concepts of reactive programming. Now, it's time to apply them to a real-world scenario, where we will use an API to get some data through an HTTP request and print the response data to the console.

We used one additional plugin for this example—RxJava-Apache-HTTP. If you're using Gradle as your build tool, add the following dependency:

    //RxJava - Apache - HTTP 
    compile "com.netflix.rxjava:rxjava-apache-http:0.20.7" 

Here is the code:

    fun main(args: Array<String>) { 
      val httpClient = HttpAsyncClients.createDefault()//(1) 
      httpClient.start()//(2) 
      ObservableHttp.createGet("http://rivuchk.com/feed/json",
httpClient).toObservable()//(3) .flatMap{ response -> response.content.map{ bytes -> String(bytes) }//(4) } .onErrorReturn {//(5) "Error Parsing data " } .subscribe { println(it)//(6) httpClient.close()//(7) } }

In this program, we used HttpAsyncClients.createDefault() to get an instance of CloseableHttpAsyncClient. Before starting an HTTP request, we first need to start the client. We did this in the code on comment (2), with httpClient.start(). On comment (3), we created a GET request and converted it to an observable of type ObservableHttpResponse, so we used the flatMap operator to get access to the content of the response. Inside the flatMap operator, we used the map operator to convert the byte response into a String on comment (4).

On comment (5), we used the onErrorReturn operator to return a default String in case there's an error.

Finally, after the onErrorReturn operator, we subscribed to the chain and printed the response on comment (6). We closed the httpClient as soon as we were done with the response.

The following is partly a screenshot of the output:

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.116.14.245