我正在尝试执行HTTP Get请求,但我继续收到Error Domain = NSURLErrorDomain Code = -1012错误。我的代码是:
@try {
NSString *url = [[NSString alloc] initWithFormat:@"%@%@", @"http://api.mintchat.com/agent/chats/", agentSecret];
NSLog(@"******Agents Active List URL Str - %@", url);
NSURL *nsUrl = [NSURL URLWithString:url];
NSLog(@"******Agents Active List URL - %@", nsUrl);
// Make the request, returning a JSON response, just as a plain old string.
//NSData *jsonDataString = [[NSString stringWithContentsOfURL:[NSURL URLWithString:url] encoding:NSUTF8StringEncoding error: nil] dataUsingEncoding:NSUTF8StringEncoding];
NSError *error = nil;
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:nsUrl];
[request setHTTPMethod:@"GET"];
[request setValue:API_ID forHTTPHeaderField:@"X-API-ID"];
[request setValue:API_SECRET forHTTPHeaderField:@"X-API-SECRET"];
NSHTTPURLResponse *response = nil;
NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"Response Code %d", [response statusCode]);
if ([response statusCode] >= 200 && [response statusCode] < 300) {
NSString *responseData = [ [NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
NSLog(@"Response ==> %@", responseData);
} else {
if (error)
NSLog(@"ERror : %@", error);
}
}@catch(NSException *e) {
NSLog(@"Exception - %@", e);
}
我想在JSon中得到回应,但由于事情不起作用所以我们正在尝试一些正常的回应。我确认要添加到请求中的标题。我需要将两个值添加到标题中。网址也很合适。
我得到的结果/日志是: 响应代码0
错误:错误域= NSURLErrorDomain代码= -1012“无法完成操作。 (NSURLErrorDomain错误-1012。)“UserInfo = 0x8abf470 { NSErrorFailingURLKey = ....... NSErrorFailingURLStringKey = ...... NSUnderlyingError = 0x8dafed0“操作无法完成。(kCFErrorDomainCFNetwork error -1012。)” }
我也在net reg上搜索了很多这个错误,有点无法得到任何实质性的帮助。我还确认了访问Web服务器api。使用其他网址也可以获得相同的结果。从3个网址,我可以使用POST获得第一个网址的结果,但是其他2个网址 - 只是无法通过它。
任何人都可以帮我解决这个问题。哪里出错了?为什么无法访问api。 任何帮助都非常感谢。 感谢
答案 0 :(得分:35)
使用AFNetworking访问带有错误/过期证书的HTTPS(非HTTP)URL时,可能会收到此错误。 (点击网址时,Chrome会显示“您的连接不是私密”消息)。
答案 1 :(得分:10)
此错误 NSURLErrorUserCancelledAuthentication
取消身份验证的异步请求时返回 由用户。这通常是通过单击“取消”按钮产生的 在用户名/密码对话框中,而不是用户尝试 进行身份验证。
这意味着您需要身份验证才能访问您尝试访问的资源而无需正确签署您的请求(错误的agentSecret或API_ID或API_SECRET)
答案 2 :(得分:4)
对于我的情况,我只是为afnetworking http客户端的标志设置了Yes。 allowsInvalidSSLCertificate = YES,它开始为https get请求工作。
答案 3 :(得分:1)
如果它对任何人有帮助,只要服务器发回401
(未经授权的)状态代码,您就会收到此错误。