gpt4 book ai didi

ios - Xamarin iOS ModernHttpClient Owin OAuth2 Bearer Token Authentication DefaultHeader 导致 "System.Net.WebException: cannot parse response"

转载 作者:行者123 更新时间:2023-11-29 11:59:51 25 4
gpt4 key购买 nike

我正在创建一个 Xamarin Forms 概念验证,但由于发布到我的休息服务的问题而遇到了一些障碍。 rest 服务是使用 OAuth Bearer Tokens 的 Web API 2 Rest 服务。我让它通过 https 使用有效的 SSL 证书运行。

我可以在设备上获得 token ,但是,使用 Bearer token 授权 header 发布会导致

System.Net.WebException: cannot parse response.

如果我省略授权 header ,由于身份验证,请求在服务器上失败。如果我包含它,请求永远不会发送到服务器(使用 charles 代理来验证)。

“rest client”是一个简单的 HttpClient 包装器,以 ModernHttpClient 作为提供者,在 PCL 中定义。 “休息客户端”在控制台应用程序中工作得很好。我想我在 iOS 中看到了与身份验证 header 相关的较低级别的异常...

这就是我在 PCL 中构建 HttpClient 的方式:

        Client = new HttpClient(new NativeMessageHandler());
Client.MaxResponseContentBufferSize = 256000;
Client.BaseAddress = new Uri("https://rest-dev.mysub.mydomain.com");

Client.DefaultRequestHeaders.Accept.Clear();
Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

Client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Authentication.AuthorizationToken); // Authentication is where I store the token

然后我发布模型:

        var strContent = JsonConvert.SerializeObject(model);
var content = new StringContent(strContent, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync($"api/devices", content);

所有这些都包含在一个测试应用程序中,该应用程序使用相同的 PCL 发布到服务器。

不确定它是否重要,但如果它确实重要,在 Xamarin Forms PCL 中,这将在登录时的新命令中调用(在获得 token 后)。

无论是在 iOS 模拟器还是在我的设备上运行,我都出现同样的错误。

我发现有趣的是,当我不使用 ModernHttpClient 作为提供者时,我在尝试获取 token 时会收到不同的错误:

"System.Net.WebException: Error: SendFailure (Error writing headers)"

对此的研究引导我走上了设置有效 SSL 的道路。

任何在正确方向上的帮助将不胜感激。我的 google-fu 在墙上。

更新

我想我已经解决了这个问题,它与 SSL 证书有关。我使用了 Charles Proxy 并安装了它的证书来调试连接,它才刚刚开始工作。不过,如果不使用 Charles Proxy,仍然无法正常工作。

最佳答案

这原来是 IIS SSL 握手的问题。我的解决方案:

https://serverfault.com/a/779895/42134

关于ios - Xamarin iOS ModernHttpClient Owin OAuth2 Bearer Token Authentication DefaultHeader 导致 "System.Net.WebException: cannot parse response",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37442371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com