Анализировать динамическую c строку, поступающую из ответа при использовании SimpleXmlConverterFactory с Retrofit в Kotlin - PullRequest
0 голосов
/ 17 июня 2020
 fun createServiceUsingSimpleXmlConverterFactory(): RetrofitService {

        val logging = HttpLoggingInterceptor()
        // set your desired log level
        logging.level = HttpLoggingInterceptor.Level.BODY

        val strategy: Strategy = AnnotationStrategy()

        val serializer: Serializer = Persister(strategy)

        val httpClient =
            OkHttpClient.Builder() // add your other interceptors …
                .addInterceptor(logging)// add logging as last interceptor
                .connectTimeout(3, TimeUnit.MINUTES)
                .writeTimeout(3, TimeUnit.MINUTES)
                .readTimeout(3, TimeUnit.MINUTES)
                .build()

        val retrofit = Retrofit.Builder()
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .addConverterFactory(SimpleXmlConverterFactory.create(serializer))
            .baseUrl(BASE_URL)
            .client(httpClient)
            .build()

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

}
  • Это мой класс обслуживания для модернизации.
  • Я создаю запрос soap и вызываю api.
  • Запрос успешно создан и напечатан в logcat.
  • Я получаю ответ Dynami c от сервера.
  • Мой ответ будет «Принято» или « Failed "или может быть что угодно, Dynami c в отличие от других ответов.

Это ошибка, которую я получаю.

org.xmlpull.v1.XmlPullParserException: Unexpected token (position:TEXT Accepted@1:9 in okhttp3.ResponseBody$BomAwareReader@6aac9ad) 

Здесь api успешно, как я вижу в журнале в этой ошибке я также вижу, что мой ответ принят. Но не удалось его проанализировать.

Это мой метод вызова API службы.

fun callApi(@Body body: Request?): Observable<Response?>

Я попытался поставить обычную строку вместо вышеприведенного ответа, но не работает.

Мой класс ответа:

@Root(name = "")
data class Response(
@Text
val data: String? = null
)

Но я не могу разобрать. Дайте мне знать, если у вас есть идеи.

...