gRPC 请求在 Android 上失败<= 9

问题描述 投票:0回答:0

gRPC 请求在 Android 10 (API 29) 和任何更高版本上成功,但在 Android 9 (API 28) 和更早版本上失败,但出现以下异常。

Error starting gRPC call. HttpRequestException: Requesting HTTP version 2.0 with version policy RequestVersionOrHigher while unable to estabilish HTTP/2 connection.

服务器上没有请求记录,它在模拟器中停止了。

我在 Android 上使用 .NET MAUI (.NET 7),我在模拟器上测试它,并在 Linux Azure WebApp 上调用 Internet 上的 HTTPS URL。

有趣的是,相同的调用适用于旧版 Android(版本 <= 9) when I'm calling my development API over my home network on

http://192.168.100.22:5500
,但这被明确配置为不安全的 HTTP,以避免自签名证书和 Android 配置出现问题。它仍然是 gRPC,而不是 gRPC-Web。

出于这个原因,我怀疑 TLS 问题......但我不知道为什么这在 Android 10 上有效而在旧版本上失败。我已经检查了 version 10 changelog Android 10 默认制作了 TLS 1.3,我的 Azure WebApp 正在运行 TLS 1.2....但这并没有告诉我太多,TLS 1.2 应该仍然适用于版本 <= 9.

更新

我在 grpc-dotnet 回购中创建了一个问题 -> https://github.com/grpc/grpc-dotnet/issues/2126.

重现错误的项目链接:https://github.com/czmirek/maui_droid_linuxazapp_grpc_bug

android grpc maui tls1.2 .net-7.0
© www.soinside.com 2019 - 2024. All rights reserved.