Английский | Документация на китайском
Безопасный клиент HTTP для Android, написанный на основе OkHttp.
Await | Flow | RxJava (Kotlin) | RxJava (Java) |
---|---|---|---|
java val user = RxHttp.get("/server/..").add("key", "value").toAwait().await() |
java RxHttp.get("/server/..").add("key", "value").toFlow().catch().collect() |
java RxHttp.get("/server/..").add("key", "value").toObservable().subscribe() |
java RxHttp.get("/server/..").add("key", "value").toObservable(User.class).subscribe() |
Поддержка корутин Kotlin, RxJava2, RxJava3
Поддержка парсеров данных Gson, Xml, ProtoBuf, FastJson и других сторонних инструментов
Поддержка автоматического закрытия запросов в FragmentActivity, Fragment, View, ViewModel и любом другом классе
Глобальная шифровка и расшифровка, добавление общих параметров и заголовков, сетевой кэш, все это поддерживается отдельной настройкой для каждого запроса
1. Добавление зависимостей и конфигураций
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
plugins {
// kapt/ksp выбираете одно
// id 'kotlin-kapt'
id 'com.google.devtools.ksp' version '2.0.0-1.0.24'
}
dependencies {
def rxhttp_version = '3.3.1'
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
implementation "com.github.liujingxing.rxhttp:rxhttp:$rxhttp_version"
// ksp/kapt/annotationProcessor выбираете одно
ksp "com.github.liujingxing.rxhttp:rxhttp-compiler:$rxhttp_version"
}
implementation "com.github.liujingxing.rxhttp:converter-serialization:$rxhttp_version"
implementation "com.github.liujingxing.rxhttp:converter-fastjson:$rxhttp_version"
implementation "com.github.liujingxing.rxhttp:converter-jackson:$rxhttp_version"
implementation "com.github.liujingxing.rxhttp:converter-moshi:$rxhttp_version"
implementation "com.github.liujingxing.rxhttp:converter-protobuf:$rxhttp_version"
implementation "com.github.liujingxing.rxhttp:converter-simplexml:$rxhttp_version"
implementation 'io.reactivex.rxjava3:rxjava:3.1.6'
implementation 'io.reactivex.rxjava3:rxandroid:3.0.2'
implementation 'com.github.liujingxing.rxlife:rxlife-rxjava3:2.2.2' //RxJava3, Автоматическое закрытие запросов
implementation 'io.reactivex.rxjava2:rxjava:2.2.8'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'com.github.liujingxing.rxlife:rxlife-rxjava2:2.2.2' //RxJava2, Автоматическое закрытие запросов
ksp {
arg("rxhttp_rxjava", "3.1.6")
}
kapt {
arguments {
arg("rxhttp_rxjava", "3.1.6")
}
}
android {
defaultConfig {
javaCompileOptions {
annotationProcessorOptions {
arguments = [
rxhttp_rxjava: '3.1.6',
]
}
}
}
}
ksp {
arg("rxhttp_package", "rxhttp.xxx")
}
kapt {
arguments {
arg("rxhttp_package", "rxhttp.xxx")
}
}
android {
defaultConfig {
javaCompileOptions {
annotationProcessorOptions {
arguments = [
rxhttp_package: 'rxhttp.xxx'
]
}
}
}
}
Наконец, выполните сборку проекта, что является обязательным
2. Инициализация SDK
Этап не обязателен
RxHttpPlugins.init(OkHttpClient)
.setDebug(boolean)
.setOnParamAssembly(Consumer)
....
3. Настройка базового URL
Этот этап не обязателен
public class Url {
//Добавьте аннотацию @defaultDomain к BASE_URL
@DefaultDomain
public static BASE_URL = "https://..."
}
4. Выполнение запроса
// java
RxHttp.get("/service/...") //1、Вы можете выбрать get, postFrom, postJson и т.д.
.addQuery("key", "value") //добавление параметра запроса
.addHeader("headerKey", "headerValue") //добавление заголовка запроса
.toObservable(Student.class) //2、Используйте метод toXxx для определения типа возвращаемого значения, настраиваемый
.subscribe(student -> { //3、Подписывание наблюдателя
//Успешный обратный вызов,默认IO线程
}, throwable -> {
//Обратный вызов ошибки
});
// kotlin
RxHttp.postForm("/service/...") //post FormBody
.add("key", "value") //добавление параметра в тело
.addQuery("key1", "value1") //добавление параметра запроса
.addFile("file", File(".../1.png")) //добавление файла в тело
.toObservable<Student>()
.subscribe({ student ->
//默认IO线程
}, { throwable ->
})
// kotlin корутина
val students = RxHttp.postJson("/service/...") //1、post {application/json; charset=utf-8}
.toAwaitList<Student>() //2、Используйте метод toXxx для определения типа возвращаемого значения, настраиваемый
.await() //3、Получение возвращаемого значения, await — это suspend метод
1. Закрытие запроса
// В Rxjava2, автоматическое закрытие запросов
RxHttp.get("/service/...")
.toObservableString()
.as(RxLife.as(this)) // При уничтожении Activity автоматически закрывается запрос
.subscribe(s -> {
// 默认IO线程
}, throwable -> {
});
// В Rxjava3, автоматическое закрытие запросов
RxHttp.get("/service/...")
.toObservableString()
.to(RxLife.to(this)) // При уничтожении Activity автоматически закрывается запрос
.subscribe(s -> {
// 默认IO线程
}, throwable -> {
});
// В RxJava2/RxJava3, закрытие запроса вручную
Disposable disposable = RxHttp.get("/service/...")
.toObservableString()
.subscribe(s -> {
// 默认IO线程
}, throwable -> {
});
disposable.dispose(); // Закрытие запроса в нужное время
Если вы используете RxHttp версии 2.2.8 или выше, правила сжатия и переименования уже включены автоматически. В противном случае вам необходимо вручную добавить опции в rxhttp.pro.
Если этот проект помогает вам очень много и вы хотите поддержать развитие и поддержку этого проекта, смело сканируйте следующий QR-код для доната. Ваш донат высоко ценится. Спасибо!
Copyright 2019 liujingxing
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )