2014-09-12 58 views
5

我一直在處理涉及客戶端 - 服務器通信的應用程序。一切工作正常,直到iOS 7.1。現在Xcode 6 GM Seed已經推出,我試圖在iOS8模擬器上構建並運行該項目。但是,所有NSURLConnections現在似乎都已超時。我無法從服務器獲得任何響應。這適用於iOS 7模擬器和Xcode 6.
我嘗試使用NSURLSession希望能夠解決問題。但它沒有。
任何幫助將不勝感激!如果其他人遇到此問題,請告訴我,如果您有任何解決方法。NSURLConnection在iOS8上超時

UPDATE
這是我使用的代碼:

NSString *authStr = [NSString stringWithFormat:@"%@:%@", username, password]; 
NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding]; 
NSString *authValue = [NSString stringWithFormat: @"Basic %@",[authData base64EncodedStringWithOptions:0]]; 
[inURLRequest setValue:authValue forHTTPHeaderField:@"Authorization"]; 

請注意inURLRequest已經與所需的URL iniatlized。
之後,只需使用inURLRequest像往常一樣激發事務。例如,如果使用NSURLSession,請使用此請求對象創建下載任務,並調用恢復其上的API

回答

1

好了,我已經找到了這個問題的解決辦法。
該應用程序對每個REST Web服務都進行了基本身份驗證。這意味着我們曾經爲每個Web服務獲得身份驗證質詢,我們將憑據發回挑戰。 我改變了這個,將請求頭中的證書(加密格式)作爲頭字段發送。

我不知道這是如何工作在iOS 7中,而不是在iOS 8中。但是,這似乎已經解決了我的問題:)。

+0

你能提供給我解釋的代碼嗎? – 2014-10-14 04:32:59

+1

請參閱問題中的更新。至於說明,我猜想處理BASIC認證的理想方式就是這樣。但是,在早期的iOS版本中,NSURLConnection還允許在挑戰中執行BASIC身份驗證。這顯然不再支持,因此這個代碼。 – 2014-10-14 08:27:24

+0

@SahityaTarumani在我的測試中,如果請求能夠立即啓動,基本身份驗證在iOS 8.1/8.2中可以正常工作,但是如果連接必須等待其他人先完成,它纔會顯示這個新的iOS 8錯誤。 – Rob 2015-03-15 05:55:13

0

如果你正在流數據NSURLConnection確保你write新數據恰好一次,當流事件hasSpaceAvail已經到來 - 我發現我有連接問題,當我錯誤處理hasSpaceAvail事件。

write不止一次響應事件

write零時間(否則你不會得到另一個hasSpaceAvail事件)