在 Android 中解决 WebSocket 连接关闭的 426 错误,可以尝试以下步骤:
确保服务器端支持 WebSocket 协议的版本。426 错误表示客户端请求的 HTTP 版本不受服务器支持。请确认服务器端是否支持客户端请求的 WebSocket 版本。
检查 Android 项目中 WebSocket 相关的依赖是否正确引入。确保已添加正确的 WebSocket 客户端库。
如果使用的是 OkHttp 客户端库,可以尝试在 WebSocket 连接前设置适当的 HTTP 版本。示例如下:
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.WebSocket;
import okhttp3.WebSocketListener;
public class MainActivity extends AppCompatActivity {
private static final String WS_URL = "wss://example.com/websocket";
private WebSocket webSocket;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
OkHttpClient client = new OkHttpClient.Builder().build();
Request request = new Request.Builder()
.url(WS_URL)
.addHeader("Sec-WebSocket-Version", "13") // 设置 WebSocket 版本为 13
.build();
webSocket = client.newWebSocket(request, new WebSocketListener() {
// WebSocket 相关的回调方法
});
}
}
在这个示例中,我们通过 addHeader
方法将 Sec-WebSocket-Version
设置为 13,以确保与服务器端的 WebSocket 版本一致。
请注意,具体的解决方法可能因项目和服务器配置而异。根据实际情况进行调整和尝试。