Почему Retrofit не отправляет POST-запрос на сервер? - PullRequest
0 голосов
/ 14 февраля 2020

В объявлении API у меня есть этот код:

@FormUrlEncoded
@POST("loginByPass/")
fun loginByPassword(@Field("login") login: String,
                    @Field("password") password: String,
                    @Field("phone") phone: String) : Observable<AuthResponse>

Модифицировать объект, который я создаю следующим образом:

class API {
    companion object {
        fun getRetrofitAPI() : IAPI {
            val interceptor = HttpLoggingInterceptor()
            interceptor.setLevel(HttpLoggingInterceptor.Level.BODY)


            val client = OkHttpClient.Builder()
                .connectTimeout(30, TimeUnit.SECONDS)
                .addInterceptor(interceptor)
                .addNetworkInterceptor(interceptor)
                .build()

            val retrofit = Retrofit.Builder()
                .baseUrl(SERVER_ADDRESS)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .client(client)
                .build()

            return retrofit.create(IAPI::class.java)
        }
    }
}

И запрос:

api.loginByPassword(login, password, "")
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            .subscribe({
                Log.w("USER_DB", "CODE: " + it.code)
            }, {
                this.sayError(it.localizedMessage)
            }).dispose()

И я не имею никакого ответа вообще! В журналах кажется, что я не отправил ни одного запроса. Также я видел отправленные пакеты - из эмулятора ничего не отправлялось. Я звоню на IP-адрес сервера по HTTP. Не могли бы вы дать мне совет, в чем проблема?

1 Ответ

3 голосов
/ 14 февраля 2020

Согласно ответу @DrawnRaccoon, .dispose () уничтожает запрос, поэтому я должен использовать CompositeDisposable для сбора всех запросов и удаления их в методе onDestroy ().

...