Inglés | 中文文档
Un cliente HTTP con seguridad de tipos para Android. Escrito en base a OkHttp
Esperar | Fluir | RxJava (Kotlin) | RxJava (Java) |
---|---|---|---|
()
.await()
//or awaitResult return kotlin.Result //await return User //tryAwait return User? val user = RxHttp . get ( "/server/.." ) . add ( "key" , "value" ) . toAwait < User >() . await () //or awaitResult return kotlin.Result | ()
.catch {
//Failure
}.collect {
//Success
} "> RxHttp . get ( "/server/.." ) . add ( "key" , "value" ) . toFlow < User >() . catch { //Failure }. collect { //Success } | ()
.subscribe({
//Success
}, {
//Failure
}) "> RxHttp . get ( "/server/.." ) . add ( "key" , "value" ) . toObservable < User >() . subscribe ({ //Success }, { //Failure }) | {
//Success
}, throwable -> {
//Failure
}) "> RxHttp . get ( "/server/.." ) . add ( "key" , "value" ) . toObservable ( User . class ) . subscribe ( user - > { //Success }, throwable -> { //Failure }) |
Admite corrutinas de Kotlin, RxJava2, RxJava3
Admite Gson, Xml, ProtoBuf, FastJson y otras herramientas de análisis de datos de terceros
Admite el cierre automático de solicitudes en FragmentActivity, Fragment, View, ViewModel y cualquier clase
Admite cifrado y descifrado global, agrega parámetros y encabezados comunes, caché de red, todo admite una solicitud configurada por separado
1、Agregar dependencias y configuraciones
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
android {
compileOptions {
sourceCompatibility JavaVersion . VERSION_1_8
targetCompatibility JavaVersion . VERSION_1_8
}
}
plugins {
// kapt/ksp choose one
// id 'kotlin-kapt'
id ' com.google.devtools.ksp ' version ' 1.9.23-1.0.19 '
}
dependencies {
def rxhttp_version = ' 3.3.0 '
implementation ' com.squareup.okhttp3:okhttp:4.12.0 '
implementation " com.github.liujingxing.rxhttp:rxhttp: $rxhttp_version "
// ksp/kapt/annotationProcessor choose one
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, Automatic close request
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, Automatic close request
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'
]
}
}
}
}
Finalmente, reconstruir el proyecto, lo cual es necesario.
2、Inicializa el SDK
Este paso es opcional.
RxHttpPlugins . init ( OkHttpClient )
. setDebug ( boolean )
. setOnParamAssembly ( Consumer )
....
3. URL base de configuración
Este paso es opcional.
public class Url {
//Add the @defaultDomain annotation to BASE_URL
@ DefaultDomain
public static BASE_URL = "https://..."
}
4、Realice lo solicitado
// java RxHttp . get ( "/service/..." ) //1、You can choose get,postFrom,postJson etc . addQuery ( "key" , "value" ) //add query param . addHeader ( "headerKey" , "headerValue" ) //add request header . toObservable ( Student . class ) //2、Use the toXxx method to determine the return value type, customizable . subscribe ( student -> { //3、Subscribing observer //Success callback,Default IO thread }, throwable -> { //Abnormal callback }); // kotlin RxHttp . postForm ( "/service/..." ) //post FormBody . add ( "key" , "value" ) //add param to body . addQuery ( "key1" , "value1" ) //add query param . addFile ( "file" , File ( ".../1.png" )) //add file to body . toObservable < Student >() . subscribe ({ student -> //Default IO thread }, { throwable -> }) // kotlin coroutine val students = RxHttp . postJson ( "/service/..." ) //1、post {application/json; charset=utf-8} . toAwaitList < Student >() //2、Use the toXxx method to determine the return value type, customizable . await () //3、Get the return value, await is the suspend method
1、Cerrar la solicitud
//In Rxjava2 , Automatic close request
RxHttp . get ( "/service/..." )
. toObservableString ()
. as ( RxLife . as ( this )) //The Activity destroys and automatically closes the request
. subscribe ( s -> {
//Default IO thread
}, throwable -> {
});
//In Rxjava3 , Automatic close request
RxHttp . get ( "/service/..." )
. toObservableString ()
. to ( RxLife . to ( this )) //The Activity destroys and automatically closes the request
. subscribe ( s -> {
//Default IO thread
}, throwable -> {
});
//In RxJava2/RxJava3, close the request manually
Disposable disposable = RxHttp . get ( "/service/..." )
. toObservableString ()
. subscribe ( s -> {
//Default IO thread
}, throwable -> {
});
disposable . dispose (); //Close the request at the appropriate time
Si está utilizando RxHttp v2.2.8 o superior, las reglas de reducción y ofuscación se incluyen automáticamente. De lo contrario, deberá agregar manualmente las opciones en rxhttp.pro.
Si este proyecto le ayuda mucho y desea apoyar el desarrollo y mantenimiento del proyecto, no dude en escanear el siguiente código QR para realizar una donación. Su donación es muy apreciada. ¡Gracias!
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.