该应用程序正在向一个端点发出请求,该端点返回一个包含从数据库获取的数据的json字符串。这些数据有时可能非常巨大,最多可达4mb,服务器的默认传输编码是分块编码,因此当数据足够大时,它会将其分成块并发送到应用程序。 问题在于,Retrofit似乎没有处理这个问题,导致出现EOF错误而崩溃。 我该如何让Retrofit或者更准确地说是OkHttp知道响应可能是分块的呢?
该应用程序正在向一个端点发出请求,该端点返回一个包含从数据库获取的数据的json字符串。这些数据有时可能非常巨大,最多可达4mb,服务器的默认传输编码是分块编码,因此当数据足够大时,它会将其分成块并发送到应用程序。 问题在于,Retrofit似乎没有处理这个问题,导致出现EOF错误而崩溃。 我该如何让Retrofit或者更准确地说是OkHttp知道响应可能是分块的呢?
我在一个安卓应用程序中遇到了同样的问题。经过调查,我发现问题不是代码的问题,而是我的开发环境出了一些问题!我的工作电脑位于反向代理之后,这可能会导致我的安卓模拟器无法进行HTTP调用。
我在另一台电脑上运行了相同的代码,像JUnit和安卓模拟器一样都能正常工作!
我的建议是尝试在不同的环境中执行相同的代码... JUnit、真实设备或者另一台电脑。
请查看我的问题和答案。你会在其中找到源代码的链接。
希望对你有所帮助。