【发布时间】:2020-05-21 02:12:39
【问题描述】:
我在尝试使用 Open VPN POST 到 https API 时遇到以下异常
注意:当我尝试在连接了 Open VPN 的平板电脑中使用 swagger 访问 API 时,API 正在连接并且工作正常,只是移动应用程序无法使用它. (在 Xamarin 应用程序中,我们遇到了异常。
代码:
var uri = prepareLoginUri("/Login/Login");
var body = new { username, password };
var json = JsonConvert.SerializeObject(body);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await _client.PostAsync(uri, content);
例外:
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
找到了解决此异常但未解决问题的方法:
https://forums.xamarin.com/discussion/91782/trust-anchor-for-certification-path-not-found
根据此链接中的建议,我在MainActivity.cs
中添加了以下代码HttpClientHandler clientHandler = new HttpClientHandler();
clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; };
_client = new HttpClient(clientHandler);
这解决了异常,但现在我从 API 得到的响应是 404 Not found。
StatusCode: 404, ReasonPhrase: 'Not Found', Version: 1.1, Content: System.Net.Http.HttpConnection+HttpConnectionResponseContent
但大摇大摆地,API 工作得非常好。
【问题讨论】:
-
网址是否正确?你使用的网址是:
http://localhost:吗? -
不,我们使用的 URL 是 IP 地址192.822.2.123:2344
-
网址似乎是正确的。
-
我最近遇到了同样的异常。看看这里的帖子,以帮助正确配置您网站的 SSL 证书,这对我来说很有帮助:stackoverflow.com/a/16302527/2113715。无论证书如何,您设置的回调基本上都允许连接,这不是您想要在生产中执行的操作。
标签: c# xamarin xamarin.forms xamarin.android openvpn