当我通过HTTPS连接到服务器时,有时会收到DNS错误(无法将域转换为IP地址)。
我想处理此错误,然后直接通过IP重新连接到服务器。
问题是,当我通过IP连接时,出现类似以下错误:
错误域= NSURLErrorDomain代码= -1202” 服务器无效。您可能是“ 12.456.789.12”,这可能是您的 信息。
是的,服务器上有一个证书,但它与域名绑定!
我有一个类似的Android应用,并且通过单独添加域验证程序解决了该问题:
connection.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
HostnameVerifier hv = HttpsURLConnection.getDefaultHostnameVerifier();
return hv.verify("example.com", session);
}
});
我可以通过IP连接到服务器并避免证书问题吗(例如,就像在Android应用程序中所做的那样)?
我的代码:
let url = URL(string: "https://example.com/api/")
URLSession.shared.dataTask(with: url) { (data, response, error) in
// Reconnect by IP
if let value = error as NSError?, value.domain == NSURLErrorDomain {
let url = URL(string: "https://12.456.789.12:443/api/")
URLSession.shared.dataTask(with: url) { (data, response, error) in
// TODO: Processing data received from the server
}.resume()
// TODO: Processing data received from the server
}.resume()