2015-11-08 106 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错误消失了。