retrofit2+RxJava2 的一些坑
今天開發新項目,本着積極向上的學習態度,經過多番考慮我決定使用retrofit2 + RxJava2來做為我的網絡請求......神說:你的想法非常好
- 先看一下我的 依賴配置
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.5.0'
compile 'io.reactivex.rxjava2:rxjava:2.0.7'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
首先我們先來看幾個錯誤,如果有符合你項目錯誤的地方可以繼續看 因為我都已經調試好了沒辦法截圖我就把錯誤復制進來好了
- 第一個錯誤
com.sun.jdi.internalException:Unexpected JDWP Error:103
- 第二個錯誤
Unable to create call adapter for io.reactivex
- 第三個錯誤
Method threw 'java.lang.IllegalArgumentException' exception.
- 第四個錯誤
java.net.UnknownHostException: Unable to resolve host "h5www.kaixinwan.com": No address associated with hostname
- 今天集成的網絡框架 就報錯了這個四個主要的錯誤下面我根據我解決的問題進行解釋
- 一二三錯誤是因為一個問題造成的 先看一下在哪里造成錯誤的原因....在第二行造成的
baseApi = retrofit.create(BaseApi.class);
>>>>>Observable findObservable = baseApi.getFind(scy_type);<<<<<
-
當時這個問題我找了好多博客都是英文的(WTF)根本看不懂,最后想辦法自己解決吧,總不能寫一半放棄,這也不是我性格,看了好多文章說明,最后發現因為如果用retrofit2的時候 是堅決堅決不能使用RxJava1的必須使用RxJava2
-
如果出現上述一二三問題應該在你的依賴中加入
舊的:compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
新的:compile 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'
- 看好了這個是 rxjava2 : 2 . 2 . 0 我當時看了半天感覺也一樣啊 它的后綴是rxjava2 :X.X.X
同時 記住是同時把以前的注釋掉 一定要注釋掉(我就忘記注釋掉了 導致還是報錯 豬腦袋!!!)

compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0-beta4' 網上說加這個依賴
大家不用試了 不好使!!!!!
- 最后一步在retrofit中更改配置 添加RxJava2CallAdapterFactory.create()
retrofit = new Retrofit.Builder()
.baseUrl(BaseUrl)
.client(build)
.addConverterFactory(FastJsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
-
至此應該能解決了.
-
第四個錯誤 后台給了我一個網址 我在網頁中可以打開 在cmd中也可以ping通 但是用着個框架怎么調試都是報第四個錯誤,框架告訴你找不到主機地址(找不到就對了),因為這個地址只能在虛擬機中進行調試,而且還得配置虛擬機的host---把這個地址加進去,,記住加進去之后要加一個回車要不不生效(具體怎么配置 自行百度)
如果幫你解決了 給個喜歡唄
