WebAPIを使うiOSアプリで通信のテストをする場合(その2)
以前、Mac上のiOSシミュレータのアプリからWebAPI(https/自己証明書)通信を行うと例外が発生するので、httpでアクセスする方法について記載しましたが、回避する方法がありました。
iOS シミュレーターと Android エミュレーターからローカル Web サービスに接続する - Xamarin | Microsoft Docs
こちらに証明書のチェックをバイパスする方法があり、試したところ、ASP.NETのWebAPIテストサーバと疎通が行えました。
HttpClientを使用しているクラスに
public HttpClientHandler GetInsecureHandler()
{
HttpClientHandler handler = new HttpClientHandler();
handler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) =>
{
if (cert.Issuer.Equals("CN=localhost"))
return true;
return errors == System.Net.Security.SslPolicyErrors.None;
};
return handler;
}
を追加し、HttpClientをnewしている箇所を
#if DEBUG
HttpClientHandler insecureHandler = GetInsecureHandler();
HttpClient client = new HttpClient(insecureHandler);
#else
HttpClient client = new HttpClient();
#endif
のように変更しました。