2016-09-23 5 views
0

私はポストAPIを呼び出すためにNSURLSessionを使用していますが、wifiを回してWebサービスを起動し、再びwifiをオンにするとNSURLSessionは前に呼び出したWebサービスを呼び出しますこのプロセスを停止したい。私はいくつかの文書をNSURLSessionがあらゆるサービスコールのセクションを格納している状況で接続が中断したときに読み込み、接続が再び確立されたときに再びそのサービスにヒットします。だから今私は、私のデバイスに接続を再接続した後、そのサービスコールを停止するための任意のソリューションを取得していない。 いずれかが私を助けてください。前もって感謝します。NSURLSessionからタスクまたはセクションを停止する方法

以下は私が使用したコードです。

  let token: NSString! 

      let urlPath: NSURL! 

      if provider .isEqualToString("No"){ 
       urlPath = NSURL(string: kAPI_SERVERBASEURL + (url as String)) 
      } 
      else{ 
       urlPath = NSURL(string: kAPI_SERVERBASEURLSEARCHPROVIDER + (url as String)) 
      } 

      var postJsonData = NSData() 
      var jsonString = NSString() 

      do { 
       postJsonData = try NSJSONSerialization.dataWithJSONObject(dictRequest, options:[]) 
       jsonString = NSString(data: postJsonData, encoding: NSUTF8StringEncoding)! 
       NSLog("request - %@", jsonString); 

       // do other stuff on success 

      } catch { 
       print("JSON serialization failed: \(error)") 
      } 

      let request = NSMutableURLRequest(URL: urlPath); 
      request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData 
      request.HTTPShouldHandleCookies = false 
      request.timeoutInterval = 120 ; 
      request.HTTPMethod = "POST"; 

      if NSUserDefaults.standardUserDefaults().valueForKey(kAccessToken) != nil{ 

       token = NSUserDefaults.standardUserDefaults().valueForKey(kAccessToken) as! NSString 
       //token = "tk_1vNoEoZRxJwY" 
       request.setValue("\(token)", forHTTPHeaderField: "access_token") 
      } 

      request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
      request.HTTPBody = postJsonData 
      let session = NSURLSession.sharedSession() 
      let task = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in 

`

+0

http://stackoverflow.com/questions/23518690/how-to-find-and-のような両方の2と3のステップを組み合わせて呼び出す前に、要求を取り消したいとしますタスクをキャンセルするタスクをキャンセルする – Krumelur

答えて

2

それはあなたを助けるかもしれません。たら、2.は今まであなたがキャンセルしたい3.when

task = NSURLSession.sharedSession().dataTaskWithURL(NSURL(fileURLWithPath: "")) 

のように宣言されたオブジェクトにオブジェクトを割り当てるdataTaskWithRequestを呼び出す必要があり

var task: NSURLSessionTask? = nil 

ようNSURLSessionTaskについて

1.Declare一つの変数リクエストは以下の通りです。

if nil != task { 
    task!.cancel() 
    task = nil 
} 

あなたは別のものが

if nil != task { 
    task!.cancel() 
    task = nil 
} 
task = NSURLSession.sharedSession().dataTaskWithURL(NSURL(fileURLWithPath: "")) 
関連する問題