1. 程式人生 > >使用Kotlin配合RxJava網路請求

使用Kotlin配合RxJava網路請求

使用 Kotlin 配合 RxJava 進行網路請求

1.首先需要配置Kotlin在專案中

  • Android Studio 3.0是自帶的,可以在建立專案的時候勾選include kotlin support
  • Android Studio 2.0+是需要自己配置的,首先需要安裝Kotlin外掛,然後在下圖這裡配置一下,Configure Kotlin in Project

2.引入第3方庫

我這裡使用的是 OkHttp3,RxJava2,RxAndroid

引入如下(在我使用時,這是最新的版本):

  • implementation ‘com.squareup.okhttp3:okhttp:3.8.1’
  • implementation ‘io.reactivex.rxjava2:rxjava:2.1.2’
  • implementation ‘io.reactivex.rxjava2:rxandroid:2.0.1’
  • implementation ‘com.google.code.gson:gson:2.8.1’
  • implementation ‘com.github.bumptech.glide:glide:4.0.0’

3.正式開始寫程式碼

在MainActivity中寫入如下程式碼

    //使用RxJava處理
    Observable.create(ObservableOnSubscribe<String> {
        e ->

        //使用okhttp3訪問網路
        val builder = Request.Builder()
        val request = builder.url(NEWS_URL).get().build()
        val response = client.newCall(request).execute()
        val responseBody = response.body()
        val result = responseBody?.string()
        //這裡的.string()只能用一次  如果下面那一句不註釋的話就會報錯
        //val result2 = responseBody?.string()

        Log.e(TAG, result)

        //這裡其實形參是String型別,然而實參是String?型別,如果直接傳result會報錯,在後面加!!即可解決
        //發射(這裡是被觀察者,被觀察者發射事件)
        e.onNext(result!!)

        //上面那句程式碼可以這樣寫
        //e.onNext(result as String)
    }).subscribeOn(Schedulers.io())  //io執行緒  被觀察者
            .observeOn(AndroidSchedulers.mainThread())  //主執行緒 觀察者
            .subscribe({

                //這裡接收剛剛被觀察者發射的事件
                //這個response就是io執行緒發射過來的result
                response ->
                Log.e(TAG, response)
            })

簡簡單單的總結

看似程式碼極少的demo,可是我卻遇到了很多的挫折,,搞了好久好久才寫好,主要是遇到錯誤的話,這種東西網上不好找解決方案….

相關推薦

使用Kotlin配合RxJava網路請求

使用 Kotlin 配合 RxJava 進行網路請求 1.首先需要配置Kotlin在專案中 Android Studio 3.0是自帶的,可以在建立專案的時候勾選include kotlin support Android Studio 2.0+是需要

Retrofit+okhttp+Rxjava 網路請求

implementation 'io.reactivex:rxandroid:1.0.1' implementation 'com.squareup.retrofit2:retrofit:2.0.2' implementation 'com.squareup.retrofit2:conver

Retrofit+Rxjava 網路請求的簡單封裝(一)(觀察者模式)

我通過公司一個上線App介面來進行Retrofit+Rxjava 的簡單學習 http://x-phone.cn/api/v1.0/DeletePrivateContact 當然你直接訪問上面的url是無法獲取伺服器Json資料的,因為是需要封裝請求體,

Retrofit+Rxjava 網路請求的完美封裝(二)(觀察者模式)

上一篇是Retrofit+Rxjava簡單封裝,是在MainActivity中構建的請求體,這篇博文是將請求體Request也置入到Rxjava中 Retrofit+Rxjava 網路請求的簡單封裝(一)(觀察者模式) 如果想對RxJava進行簡單的瞭解

Android 教你一步步搭建MVP+Retrofit+RxJava網路請求框架

之前公司的專案用到了MVP+Retrofit+RxJava的框架進行網路請求,所以今天特此寫一篇文章以做總結。相信很多人都聽說過MVP、Retrofit、以及RxJava,有的人已經開始用了,有的人可能還不知道這是什麼,以及到底怎麼用。不過沒關係,接下來我將為你一一揭開他們的神祕面紗,然後利用這三個傢伙搭建

Android RxJava 實戰系列:優雅實現 網路請求巢狀回撥

轉自-----http://blog.csdn.net/carson_ho/article/details/78315696,請為大神打call 前言 Rxjava,由於其基於事件流的鏈式呼叫、邏輯簡潔 & 使用簡單的特點,深受各大 Android

Android RxJava 實戰講解:優雅實現 網路請求輪詢

轉自-----http://blog.csdn.net/carson_ho/article/details/78256466 前言 Rxjava,由於其基於事件流的鏈式呼叫、邏輯簡潔 & 使用簡單的特點,深受各大 Android開發者的歡迎。

Android RxJava操作符的學習---功能性操作符--網路請求出錯重連(結合Retrofit)

1. 需求場景   2. 功能說明 功能需求說明     功能邏輯  例項說明 在本例子中:採用Get方法對 金山詞霸API 傳送網路請求 通過 斷開網路連線 模擬 網路異常錯誤(恢復網路即可

Android RxJava操作符的學習---功能性操作符--(有條件)網路請求輪詢(結合Retrofit)

1. 需求場景   2. 功能說明 採用Get方法對 金山詞霸API 按規定時間重複傳送網路請求,從而模擬 輪詢 需求實現 停止輪詢的條件 = 當輪詢到第4次時 採用 Gson 進行資料解析   3.

Android RxJava操作符的學習---變換操作符---網路請求巢狀回撥

變換操作符的主要開發需求場景 = 巢狀回撥(Callback hell) 下面,我將採用一個實際應用場景例項來講解巢狀回撥(Callback hell) 1. 需求場景 1.1 背景 需要進行巢狀網路請求:即在第1個網路請求成功後,繼續再進行一次網路請求 如

Android RxJava操作符的學習---建立操作符--(無條件)網路請求輪詢

1. 需求場景   2. 功能說明 本文將採用Get方法對 金山詞霸API 按規定時間 重複傳送網路請求,從而模擬 輪詢 需求實現 採用 Gson 進行資料解析   3. 具體實現 下面結合 Ret

安卓專案實戰之強大的網路請求框架okGo使用詳解(五):擴充套件專案okRx,完美結合RxJava

前言 在第一篇講解okGo框架新增依賴支援時,還記得我們額外新增的兩個依賴嗎,一個okRx和一個okServer,這兩個均是基於okGo框架的擴充套件專案,其中okRx可以使請求結合RxJava一起使用,而okServer則提供了強大的下載上傳功能,如斷點支援,多工管理等,本篇我們主要講

Retrofit+Rxjava+MVP網路請求框架

導言: 之前有套基於MVP的網路請求框架,是okhttp封裝的,後來由於retrofit,rxJava的流行,所以更改一部分來使用 釋義: retrofit:基於okhttp再次封裝的網路請求框架 rxjava:非同步工具庫,handler+thread->asyctask-&

Android_Retrofit+RxJava+MVP+網路請求多次判斷

//依賴 compile 'io.reactivex.rxjava2:rxjava:2.1.1' compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'com.squareup.retrofit2:retr

Android RxJava 實際應用講解:(無條件)網路請求輪詢

前言 Rxjava,由於其基於事件流的鏈式呼叫、邏輯簡潔 & 使用簡單的特點,深受各大 Android開發者的歡迎。 Github截圖 RxJava如此受歡迎的原因,在於其提供了豐富 & 功能強大的操作符,幾乎能完成所有的功能需求 今天,我將為大

網路請求Retrofit+RxJava

 Retrofif+Rxjava實現網路資料互動。 Retrofit是什麼? Retrofit其實我們可以理解為OkHttp的加強版,它也是一個網路載入框架。底層是使用OKHttp封裝的。準確來說,網路請求的工作本質上是OkHttp完成,而 Retrofit 僅負責網

使用Kotlin編寫網路基本網路請求

原始碼下載連結已經在篇尾給出 一:首先將網路請求需要的依賴新增到build.gradle中: //Retrofit implementation 'com.squareup.retrof

封住Rxjava+Retrofit 的網路請求

public class HttpUtils { private BaseService baseService; private Observable<ResponseBody> observable; public HttpUtil

(譯)使用KotlinRxJava處理複雜的請求

Android開發中經常會遇到這樣一個問題:服務端Api介面返回的資料和介面上要展示的資料不一致,這就需要你實現更加複雜的請求。可能你的app需要進行多次請求,有些請求還要依賴於前一個請求的結果。這對使用Java開發會是一個挑戰,並且寫出來的程式碼往往可

RxJava+Retrofit+OkHttp深入淺出-終極封裝二(網路請求

CSDN部落格釋出了一系列的RxJava+Retrofit+OkHttp深入淺出-終極封裝 之前發出後收到很多朋友的關注,原本只是自己學習後的一些經驗總結,但是有同學運用到實戰當中,這讓我很惶恐,所有後續一直更新了很多次版本,有些地方難免有所變動導致之前的部落格有所出入,正好最近受到掘金邀請內測部落格,所以決