Я использую модифицированную версию 2.6.1
для выполнения http-запросов по сети. Я ожидаю, что длина JSON составляет 42466 символов. Тем не менее, я получаю только 4073 символа, и API отлично работает в веб-браузере и почтальоне.
Поэтому я добавил собственный клиент okhttp и увеличил время ожидания, но это не помогло мне.
private var okHttpClient: OkHttpClient = OkHttpClient().newBuilder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.build()
Затем я попытался добавить перехватчик журналирования и обнаружил, что okhttp получает ответ, который я хотел, в журналах перехватчиков, но порциями.
private val httpInterceptor: HttpLoggingInterceptor = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)
private var okHttpClient: OkHttpClient = OkHttpClient().newBuilder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.addInterceptor(httpInterceptor)
.build()
Наконец, я назначил http-клиента и перехватчик для модификатора сборки, и вот как это выглядит
private val centralRetrofit = Retrofit.Builder().baseUrl("https://www.********.com/")
.addConverterFactory(ScalarsConverterFactory.create())
.client(okHttpClient)
.build()
.create(MusicAccess::class.java)
Итак, я думаю, что использование запроса по почте поможет мне, а не получить ипопытался взять все ответы в строковом формате, чтобы проверить ответ
@Headers("Content-Type: text/html; charset=UTF-8")
@POST("**********")
fun getMusic(): Call<String>
Но он также не пришел к выводу после того, как я думал, что HTTP-ответ будет иметь ограничение по размеру и использовал читатель для доступа к json из URL, выполнивспособ.
val client = OkHttpClient()
val request = Request.Builder().url("********")
.addHeader("Content-Type", "application/json")
.build()
val response = client.newCall(request).execute()
val input = response.body()?.byteStream()
val reader = BufferedReader(InputStreamReader(input))
Но так как https://stackoverflow.com/a/26023885/7639056 отвечает, что мы не можем настроить OkHttpClient для чтения более 2048 байтов из буфера
Так есть ли способ, которым я могуполучить все данные сразу?