Retrofit2,调试和发布版本的行为不同

时间:2019-09-10 07:30:59

标签: android retrofit2

在我的Android应用中,我使用retrofit2处理一些HTTPS请求。其中之一是登录端点。如果我使用Debug构建类型编译我的App,那么一切都会按预期运行

D/OkHttp: --> POST https://...sign_in/
D/OkHttp: Content-Type: application/json; charset=UTF-8
D/OkHttp: Content-Length: 45
D/OkHttp: Cookie: 
D/OkHttp: {"email":"...","password":"..."}
D/OkHttp: --> END POST (45-byte body)
D/OkHttp: <-- 200 https://.../sign_in/ (650ms)
D/OkHttp: cache-control: max-age=0, private, must-revalidate
D/OkHttp: content-type: application/json; charset=utf-8
D/OkHttp: date: Tue, 10 Sep 2019 06:55:17 GMT
D/OkHttp: server: Cowboy
D/OkHttp: set-cookie: _backend_key=...; path=/; HttpOnly
D/OkHttp: x-request-id: ...
D/OkHttp: content-length: 52
D/OkHttp: {"data":{"user":{"email":"...","id":2}}}
D/OkHttp: <-- END HTTP (52-byte body)

如果我使用Release buildtype进行编译,则主体未附加到我的请求中

D/OkHttp: --> POST https://.../sign_in/
D/OkHttp: Content-Type: application/json; charset=UTF-8
D/OkHttp: Content-Length: 2
D/OkHttp: Cookie: 
D/OkHttp: {}
D/OkHttp: --> END POST (2-byte body)
D/OkHttp: <-- 500 https://.../sign_in/ (268ms)
D/OkHttp: cache-control: max-age=0, private, must-revalidate
D/OkHttp: content-type: application/json; charset=utf-8
D/OkHttp: date: Tue, 10 Sep 2019 06:51:12 GMT
D/OkHttp: server: Cowboy
D/OkHttp: content-length: 45
D/OkHttp: {"errors":{"detail":"Internal Server Error"}}
D/OkHttp: <-- END HTTP (45-byte body)

它在我更新到Android 10之前就已经起作用了。所以我只能认为这可能是原因,但实际上对我来说这没有意义。

我使用翻新版2.5.0

1 个答案:

答案 0 :(得分:0)

好的,我想我找到了问题。我以前从没有过,但是现在我有了。 ProGuard正在做一些我没想到的事情。这个站点是弄清楚https://medium.com/@abangkis/retrofit-2-and-the-three-body-problem-f8a93039aeb2的一个很好的起点。 我暂时禁用了gradle文件中的缩小过程。我想花点时间解决所有问题。如果我保持它的活动状态,它或多或少会破坏我的应用程序的某些功能:)

相关问题