2014-03-01 219 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(未經授權)狀態碼,就會發生此錯誤。

相關問題