You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正常应用突发Retrofit协议异常,仅生产HTTPS端点调用失败

搞定Retrofit的java.net.ProtocolException: Expected ':status' header not present异常

遇到的问题

之前一直运行稳定的应用,从昨天开始突然出问题——所有打向生产环境HTTPS端点的请求全失败,抛出java.net.ProtocolException: Expected ':status' header not present错误。奇怪的是,普通HTTP请求、其他非生产环境的HTTPS端点都能正常执行,唯独生产环境这个HTTPS地址不行。

问题根因分析

这个错误大概率是HTTP/2协议兼容性问题搞的鬼。OkHttpClient默认会优先尝试用HTTP/2和服务器通信,但有些生产环境的服务器可能在HTTP/2的响应头配置上有特殊设置,导致客户端没法正确识别HTTP/2要求的:status头字段,直接触发了这个异常。

亲测有效的解决方案

强制让OkHttpClient只使用HTTP/1.1协议,绕开HTTP/2的兼容坑就行,代码很简单:

OkHttpClient client = new OkHttpClient();
client.setProtocols(Arrays.asList(Protocol.HTTP_1_1));

我这么配置之后,生产环境的HTTPS请求立刻就恢复正常了。

内容的提问来源于stack exchange,提问作者Bajrang Hudda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:26:55