2015-11-08 50 views
0

我正在開發一個iOS應用程序,其中SoundCloud用戶使用OAuth在web視圖中登錄,然後該應用程序通過Alamofire向SoundCloud API發出HTTP請求。我已成功驗證用戶身份並存儲了他們的令牌(使用ABMSoundCloudAPI),但GET請求https://api.soundcloud.com/me失敗,出現-1005錯誤「網絡連接丟失」。這似乎是iOS中的一個常見問題,正如here所討論的那樣,但重置模擬器並不能解決問題,使用設備時也會出現問題。我也試過:SoundCloud API:GET請求失敗,代碼-1005,使用iOS/Alamofire

  • 刪除並重新添加WiFi網絡
  • 重試編程請求,如果失敗
  • 添加標題爲「連接」:「關閉」

在每種情況下,我都會看到同樣的錯誤。是否有其他標題我應該嘗試?我通過使用的CocoaPods這些庫:

  • ABMSoundCloudAPI(0.2.1)
  • AFNetworking(2.6.1)
  • AFOAuth2Manager(2.2.0)
  • Alamofire(3.1.2)
  • SwiftyJSON(2.3.1)

這裏是我的代碼:

var retryCount = 0 

func getUserInfo(token:String) { 
    let headers = ["Connection": "Close"] 
    Alamofire.request(.GET, "https://api.soundcloud.com/me?oauth_token=\(token)", parameters: ["client_id":clientId], encoding: .JSON, headers: headers) 
     .responseJSON { response in 

      guard response.result.error == nil else { 
       print("error calling GET on /me") 
       print(response.result.error) 
       if self.retryCount < 2 { 
        if let token = self.defaults.stringForKey("sc_key_token") { 
         self.getUserInfo(token) 
         ++self.retryCount 
        } 
       } 
       return 
      } 

      guard let value = response.result.value else { 
       print("Error: did not receive data") 
       return 
      } 


      let user = JSON(value) 

      print("User info: " + user.description) 

    } 
} 

錯誤消息:

Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo={NSUnderlyingError=0x126248c10 {Error Domain=kCFErrorDomainCFNetwork Code=-1005 "(null)" UserInfo={_kCFStreamErrorCodeKey=-4, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=https://api.soundcloud.com/me?oauth_token=USER_TOKEN, NSErrorFailingURLKey=https://api.soundcloud.com/me?oauth_token=USER_TOKEN, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-4, NSLocalizedDescription=The network connection was lost.} 

回答

0

看來,這是由該請求的編碼引起的。當我從.JSON切換到.URL時,1005錯誤消失了。