【发布时间】:2017-06-17 20:46:50
【问题描述】:
我正在开发一个 IOS 应用程序,并且我正在使用我自己创建的托管在 Windows 服务器中的 Web 服务。我也在使用 RapidSSL 的 SSL 证书。
我正在使用 UniRest Objective-C 库 Unirest Lib >>,当我尝试请求 https 地址时,我收到此错误。
Error Domain=NSURLErrorDomain Code=-1005 "网络连接是 丢失。” UserInfo={NSUnderlyingError=0x1702501a0 {错误 Domain=kCFErrorDomainCFNetwork Code=-1005 "网络连接是 丢失。” UserInfo={NSErrorFailingURLStringKey=https://myapi.com/authorize.aspx, NSErrorFailingURLKey=https://myapi.com/authorize.aspx, _kCFStreamErrorCodeKey=54, _kCFStreamErrorDomainKey=1, NSLocalizedDescription=网络连接丢失。}}, NSErrorFailingURLStringKey=https://myapi.com/authorize.aspx, NSErrorFailingURLKey=https://myapi.com/authorize.aspx, _kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=54, NSLocalizedDescription=网络连接丢失。}
但是如果我用http协议请求相同的地址,没有错误!
这里是Info.plist;
我刚刚意识到,Safari 也无法打开页面!诡异的!
我可以在桌面 Chrome 和桌面 Firefox 上打开页面,但桌面 Safari 也无法打开。
这是我的代码:
+(void)RunAuthApiWithUsername:(NSString *)username Password:(NSString *)password completion:(void (^)(BOOL success, NSString* title, NSString* message))completionBlock
{
NSDictionary* headers = @{@"accept": @"application/json"
};
NSDictionary *parameters = @{@"username": username,
@"password": password
};
[[UNIRest post:^(UNISimpleRequest *request) {
[request setUrl:API_AUTHORIZE_URL];
[request setHeaders:headers];
[request setParameters:parameters];
}] asJsonAsync:^(UNIHTTPJsonResponse* response, NSError *error) {
NSDictionary *jsonDict = response.body.JSONObject;
NSString* isSuccess = [jsonDict objectForKey:@"success"];
if([isSuccess isEqualToString:@"1"]){
completionBlock(YES, nil, nil);
}
else{
completionBlock(NO, [jsonDict objectForKey:@"title"], [jsonDict objectForKey:@"message"]);
}
}];
}
【问题讨论】:
-
我不再使用 Unirest 库了。谢谢。
标签: ios objective-c ssl https unirest