1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/327744707-okhttp-RxHttp

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

RxHttp

Английский | Документация на китайском

(Руководство по обновлению RxHttp 3.0, обязательно для чтения при обновлении)

Безопасный клиент HTTP для Android, написанный на основе OkHttp.

sequence_chart_en.jpg

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()

1. Возможности

  • Поддержка корутин Kotlin, RxJava2, RxJava3

  • Поддержка парсеров данных Gson, Xml, ProtoBuf, FastJson и других сторонних инструментов

  • Поддержка автоматического закрытия запросов в FragmentActivity, Fragment, View, ViewModel и любом другом классе

  • Глобальная шифровка и расшифровка, добавление общих параметров и заголовков, сетевой кэш, все это поддерживается отдельной настройкой для каждого запроса

2. Установка

1. Добавление зависимостей и конфигураций

Обязательные

Добавьте jitpack в ваш build.gradle
allprojects {
    repositories {
        maven { url "https://jitpack.io" }
    }
}
Java 8 или выше
android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
Добавьте зависимость RxHttp
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"
 }

Опциональные

1. Конверторы

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"

2. RxJava

RxHttp + RxJava3
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, Автоматическое закрытие запросов
RxHttp + RxJava2
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, Автоматическое закрытие запросов
Передача версии RxJava через ksp
ksp {
    arg("rxhttp_rxjava", "3.1.6")
}
Передача версии RxJava через kapt
kapt {
    arguments {
        arg("rxhttp_rxjava", "3.1.6")
    }
}
Передача версии RxJava через javaCompileOptions
android {
    defaultConfig {
        javaCompileOptions {
            annotationProcessorOptions {
                arguments = [
                    rxhttp_rxjava: '3.1.6', 
                ]
            }
        }
    }
}

3. Установите имя пакета класса RxHttp

Передача имени пакета через ksp
ksp {
     arg("rxhttp_package", "rxhttp.xxx")
}
Передача имени пакета через kapt
kapt {
    arguments {
       arg("rxhttp_package", "rxhttp.xxx") 
    }
}
Передача имени пакета через javaCompileOptions
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 метод

3. Продвинутое использование

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(); // Закрытие запроса в нужное время

4. ProGuard

Если вы используете RxHttp версии 2.2.8 или выше, правила сжатия и переименования уже включены автоматически. В противном случае вам необходимо вручную добавить опции в rxhttp.pro.

5. Донаты

Если этот проект помогает вам очень много и вы хотите поддержать развитие и поддержку этого проекта, смело сканируйте следующий QR-код для доната. Ваш донат высоко ценится. Спасибо!

donations.png

Лицензии

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 )

Вы можете оставить комментарий после Вход в систему

Введение

30 секунд на запуск, поддержка корутин, RxJava2, RxJava3, самая элегантная в истории реализация загрузки/выгрузки файлов, отслеживания прогресса, динамического и многодоменного кэширования; поддержка сторонних инструментов анализа данных, пользовательских запросов, автоматического закрытия запросов и т. д. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/327744707-okhttp-RxHttp.git
git@api.gitlife.ru:oschina-mirror/327744707-okhttp-RxHttp.git
oschina-mirror
327744707-okhttp-RxHttp
327744707-okhttp-RxHttp
master