2014-03-01 203 views
15

我正在尝试执行HTTP Get请求,但我一直在获取错误域= NSURLErrorDomain Code = -1012错误。我的代码是:iOS无法执行HTTP GET请求 - 错误域= NSURLErrorDomain代码= -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错误-1012。)” }

我也在网上搜了很多注册此错误,位不能得到任何实质性帮助。我也确认了有关访问Web服务器API的信息。与其他网址也得到相同的结果。从3个url中,我可以使用POST获得第一个url的结果,但是其他2个url - 无法通过它。

任何人都可以请帮我解决这个问题。哪里出错?为什么不能访问api的。 任何帮助是高度赞赏。 由于

+0

可能的重复http://stackoverflow.com/questions/18415157/error-domain-nsurlerrordomain-code-1202-iphone – 2014-03-01 08:04:31

+2

未来访客注意:这实际上不是重复的 –

回答

9

此错误是NSURLErrorUserCancelledAuthentication

当用于认证的异步请求被用户取消

返回。这通常是通过在用户名/密码对话框中单击“取消”按钮 而发生的,而不是用户尝试 进行身份验证。

这意味着你需要验证才能访问您试图访问W/O正确签署您的请求资源(错误agentSecret或API_ID或API_SECRET)

+0

从您的错误中得到解决方案。需要使用NSURLRequest而不是NSMutableRequest,因此向mutRequest添加了头文件并将其复制到请求中。原始问题 - 在头字段中,在X-API-SECRET中取代' - ',unicode值通过请求发送,因此它是X \ u000API \ u000SECRET;因此它没有被认证,并且失败了。在实例变量中添加了这些标题键和值,更正了请求因子,从而能够成功访问api。谢谢。 – Tvd

+0

很高兴它解决了你的问题。 – msk

32

您可以同时击中一个HTTPS得到这个错误(不是HTTP)具有AFNetworking的错误/过期证书的URL。 (Chrome在点击URL时显示“您的连接不是私人”消息)。

+2

这应该是被接受的答案。 NSURLErrorUserCancelledAuthentication不是这里的错误 –

+0

这是正确的答案。 –

+0

好的,这是一个正确的答案。但如何处理状态码0? – fnc12

4

对于我的情况,我只是为afnetworking http client的以下标志设置为Yes。 allowsInvalidSSLCertificate = YES,它开始为https请求工作。

+0

我在这里有类似的情况。它在我切换不使用HTTPS后工作。 –

+0

如果您使用http而不是https,但是实际上我们需要有有效的自签名证书并需要设置HTTPClient.defaultSSLPinningMode = AFSSLPinningModePublicKey; – jatin

1

如果它对任何人有帮助,只要服务器发回401(未经授权)状态码,就会发生此错误。

相关问题