Retrofit 2 y kotlin: No deserializar tema: IllegelArgumentException: cerrado

Hola soy nuevo en reconversión y la estoy usando

implementation 'com.squareup.retrofit2:retrofit:2.6.1'
// JSON Parsing
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'

Estoy haciendo una llamada a la API de inicio de sesión. La llamada es el éxito(puedo ver la respuesta 200 en el interceptor he añadido), pero todavía estoy recibiendo onFailure de devolución de llamada en la actualización de la java.lang.IllegalStateException: closed como arrojadiza. He añadido algunos puntos de interrupción dentro de Reconversión de la clase y parece que es algo que surge al analizar mi respuesta. También estoy usando Kotlin

aquí está mi clase de datos:

data class LoginResponse(
    @SerializedName("payload") @Expose val payload: Payload,
    @SerializedName("status") @Expose val status: Int
)
data class Payload(
    @SerializedName("access_token") @Expose val access_token: String?,
    @SerializedName("expires_at") @Expose val expires_at: String?,
    @SerializedName("name") @Expose val name: String?,
    @SerializedName("org_name") @Expose val org_name: String?,
    @SerializedName("request_at") @Expose val request_at: String,
    @SerializedName("status_message") @Expose val status_message: String
)

Aquí es cómo estoy creando mi retrofit ejemplo:

private val okHttpClient = OkHttpClient.Builder().addInterceptor(Interceptor {
    Log.w("[email protected]", it.request().toString())
    val requestBuilder = it.request().newBuilder()
    requestBuilder.header("Content-Type", "application/json")
    val response = it.proceed(it.request())
    Log.w("[email protected]", response.body()!!.string())  //correct 200 response with json is printed out here
    [email protected] response
}).build()

val retrofitInstance: Retrofit
    get() {
        if (retrofit == null) {
            retrofit = Retrofit.Builder()
                .baseUrl(BASE_URL)
                .client(okHttpClient)
                .addConverterFactory(GsonConverterFactory.create())
                .build()
        }
        return retrofit!!
    }

Aquí es cómo estoy haciendo la llamada:

loginService.login(logindata).enqueue(object : Callback<LoginResponse> {
                override fun onFailure(call: Call<LoginResponse>, t: Throwable) {
                    Log.d(TAG, "Login failure "+t) //this is getting invoked with java.lang.IllegalStateException: closed
                }

                override fun onResponse(
                    call: Call<LoginResponse>,
                    response: Response<LoginResponse>
                ) {
                    onLoginState.value = true
                }
            })

Pasamos un montón de tiempo tratando de averiguar lo que está sucediendo, no podía encontrar lo que estoy haciendo mal aquí. También he tratado de sustituir GSON con Moshi que me dio el mismo error. Por favor me ayudara a entender el problema aquí.

Gracias de antemano.

+2
2019-09-18 03:33:26
fuente
2 respuestas

Se podría hacer algo como esto, el uso de scipy.ndimage.zoom:

import numpy as np
import scipy.ndimage as si

def resample(img, dims):
    orig = img.shape[1]

    new_imgs = []
    for dim in dims:
        factor = dim / orig
        new_img = si.zoom(img, zoom=[1, factor, factor, 1])
        new_imgs.append(new_img)

    return new_imgs

Por ejemplo, con datos aleatorios:

>>> img = np.random.random((100, 32, 32, 3))
>>> resample(img, dims = [2, 4, 8, 16, 32])
>>> [img.shape for img in new_imgs]
[(100, 2, 2, 3),
(100, 4, 4, 3),
(100, 8, 8, 3),
(100, 16, 16, 3),
(100, 32, 32, 3)]

Nota de los comentarios (más abajo) que usted puede ser que necesite para ajustar el mode parámetro en el zoom de la función.

+2
2019-09-18 03:52:17

Usted puede utilizar SciKit de la imagen de view_as_blocks y np.mean():

import numpy as np
import skimage

images = np.random.rand(10000, 32, 32, 3)
images_rescaled = skimage.util.view_as_blocks(images, (1, 4, 4, 1)).mean(axis=(-2, -3)).squeeze()
images_rescaled.shape
# (10000, 8, 8, 3)
+2
2019-09-18 03:52:17

Vea otras preguntas sobre etiquetas