如何解决Xamarin 表单和 gRPC:服务器返回无效或无法识别的响应
我正在尝试从 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 或类似内容相关,而不是告诉响应未被识别。
谢谢。
编辑:在托管服务的控制台应用程序中,我得到了这个失败:基于 TLS 的 HTTP/2 未在仅 HTTP/2 的端点上协商。
解决方法
您可以尝试使用 documentation 中提到的 Grpc.Core
或 gRPC-Web
。
目前不支持使用 Grpc.Net.Client 通过 HTTP/2 调用 gRPC Xamarin 支持。我们正在努力改进 HTTP/2 支持 未来的 Xamarin 版本。 Grpc.Core 和 gRPC-Web 是可行的替代方案 今天的工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。