Error Domain=NSURLErrorDomain Code=-1003 "A server with the specified hostname could not be found." UserInfo=0x168d9430 {NSErrorFailingURLStringKey=http://www.cndoa.com/server/service/get_shop_nearby.php, NSErrorFailingURLKey=http://www.cndoa.com/server/service/get_shop_nearby.php, NSLocalizedDescription=A server with the specified hostname could not be found., NSUnderlyingError=0x16840e10 "A server with the specified hostname could not be found.}
当iPhone将wifi的DNS设置为114.114.114.114时, 每过1~2小时,在请求服务器时就会出现以上错误, 由于这个错误, 苹果连续拒绝了我们的App两次,这个问题是DNS的域名解析错误, 安卓访问都没问题, 但是iPhone总会报这个错误,我用的AFNetworking3.1(这个问题和什么网络请求是没关系的), 和服务端也没什么关系, 以我目前的了解,和前端的关系也不大, 只是前端可以做一些补救措施.目前, 我做了以下的处理,App本周已成功上线了. 当你遇到-1003错误时,改用ip再访问一下服务器
AFHTTPSessionManager *session = [AFHTTPSessionManager manager];
session.requestSerializer = [AFJSONRequestSerializer serializer];
session.responseSerializer = [AFHTTPResponseSerializer serializer];
// 域名请求
NSString *urlStr = @"https://github.com/user/12345678";
[session GET:urlStr parameters:nil progress:^(NSProgress * _Nonnull uploadProgress) {
// nil
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
// 域名请求成功, 处理数据
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
// 域名请求失败
if (error.code == -1003) {
// 找不到指定域名的主机, 通常为域名解析错误, 改为ip访问
NSString *ipUrl = @"https://192.23.59.136/user/12345678";
AFHTTPSessionManager *ipSession = [AFHTTPSessionManager manager];
ipSession.requestSerializer = [AFJSONRequestSerializer serializer];
ipSession.responseSerializer = [AFHTTPResponseSerializer serializer];
[ipSession GET:ipUrl parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
//nil
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
// ip请求成功, 处理数据
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
// ip请求失败
}];
}
}];
总结: 遇到这个DNS的域名解析错误的问题时, 可以使用该方式绕过DNS的域名解析, 而直接使用ip访问,期待以后能有更加完善的解决方案, 能和大家多讨论,分享.