当尝试使用 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未找到。
StatusCode: 404, ReasonPhrase: 'Not Found', Version: 1.1, Content: System.Net.Http.HttpConnection+HttpConnectionResponseContent
但是大张旗鼓,该API绝对可以正常工作。
答案 0 :(得分:0)
尝试将斜杠(/
)放在BaseAddress
的末尾,并且一定不要在相对URI的开头放置斜杠(/
)。就像:
client.BaseAddress = new Uri("http://192.168.1.100:33435/ManageSystem/");
var response = await client.GetAsync("Login/Login");
答案 1 :(得分:0)
解决方案
我们需要一个SSL证书,但是即使添加了一个SSL证书,我们仍然存在此问题, 这与移动应用程序无关,问题在于SSL证书 我们没有正确配置证书,我们必须添加中间 证书生成HA代理的.pem文件。
该网站将我们的重点从移动应用转移到了服务器。 https://www.digicert.com/help/
它清楚地表明问题出在服务器上,以下是链接 这帮助我解决了这个问题。