【问题标题】:Xamarin forms and gRPC: The server returned an invalid or unrecognized responseXamarin 表单和 gRPC:服务器返回无效或无法识别的响应
【发布时间】:2021-08-02 14:04:32
【问题描述】:

我正在尝试从 gRPC 服务获取响应,但是当我从 Xamarin 应用程序进行调用时,我收到服务器返回无效或无法识别的响应的错误消息。但是,如果我使用 WPF 客户端,它使用与 Xamarin 应用程序相同的 gRPC 客户端库,它会按预期工作,我会从服务中获得响应。

服务代码是这样的:

            webBuilder.ConfigureKestrel(options =>
            {
                options.Listen(IPAddress.Any, 5001, listenOptions =>
                {
                    listenOptions.Protocols = HttpProtocols.Http2;
                    listenOptions.UseHttps("server.pfx", "1111");
                });
            });
            webBuilder.UseStartup<Startup>();

客户端库:

        HttpClientHandler miHandler = new HttpClientHandler();

        miHandler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;

        GrpcChannelOptions misOpciones = new GrpcChannelOptions() { HttpHandler = miHandler };

        var miChannel = GrpcChannel.ForAddress("https://192.168.1.134:5001", misOpciones);

我做错了什么?起初我以为是因为从android我不能使用http,所以我需要https,但现在我使用的是https。确实,我忽略了来自服务器的任何证书,这可能是原因吗?但是错误消息将与 SSL 或类似的东西有关,而不是告诉响应无法识别。

谢谢。

编辑:在托管服务的控制台应用程序中,我得到了这个失败:HTTP/2 over TLS 没有在仅 HTTP/2 的端点上协商。

【问题讨论】:

    标签: c# xamarin xamarin.forms grpc


    【解决方案1】:

    您可以尝试使用Grpc.CoregRPC-Web,正如documentation 中提到的那样。

    目前不支持使用 Grpc.Net.Client 通过 HTTP/2 调用 gRPC Xamarin 支持。我们正在努力改进对 HTTP/2 的支持 未来的 Xamarin 版本。 Grpc.Core 和 gRPC-Web 是可行的替代方案 今天的工作。

    您可以参考https://stackoverflow.com/a/60362990/10768653

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多