2017-04-14 14 views
3

HTTPリクエストで固まってしまった。error.compilerは、最初の2行を読み込み、コードを「task.resume()」にスキップしていません。同じデータをフェッチしています。他のビューコントローラ上のコードが、それは/ POST/PUT/DELETE GETブロックを使用して、ここで迅速なHTTPリクエスト3 Xcode 8.3

func getCustomers() 
{ 
    let url = NSURL(string: "myURL.com") 
    let task = URLSession.shared.dataTask(with: url! as URL) { 
     (data, response, error) in 

     guard let _:Data = data, let _:URLResponse = response , error == nil else { 
      print("error: \(String(describing: error))") 

      return 
     } 
     do 
     { 
      self.getcustomersArray = [GetCustomers]() 
      //JSON Parsing 
      if let data = data, 

       let json = try JSONSerialization.jsonObject(with: data) as? [String: Any] 
      { 
       let results = json["Result"] as? [[String : Any]] 

       let getCustomersObject:GetCustomers = GetCustomers() 
       for result in results! 
       { 
        getCustomersObject.ActivityPrefix = (result["ActivityPrefix"] as? String)! 
        getCustomersObject.CustomerID = (result["CustomerID"] as? String)! 
        getCustomersObject.CustomerName = (result["CustomerName"] as? String)! 
        getCustomersObject.TFMCustomerID = (result["TFMCustomerID"] as? String)! 
        getCustomersObject.ShortName = (result["ShortName"] as? String)! 
        getCustomersObject.UserRights = (result["UserRights"] as? Int)! 

        self.totalCustomers += self.totalCustomers 
       } 
       self.customerName = getCustomersObject.CustomerName 

      } 
     }//end Do 
     catch 
     { 

     } 
    } 

    task.resume() 
} 
+0

'dataTask'の補完ブロックが応答を受け取ったときに後で呼び出されるので、明らかです –

+2

何が問題なのですか? – vadian

+0

作成している問題は何ですか? –

答えて

1

を問題をcreats:

let request = NSMutableURLRequest(url: URL(string: "Your API URL here" ,param: param))!, 
     cachePolicy: .useProtocolCachePolicy, 
     timeoutInterval:"Your request timeout time in Seconds") 
    request.httpMethod = "GET" 
    request.allHTTPHeaderFields = headers as? [String : String] 

    let session = URLSession.shared 

    let dataTask = session.dataTask(with: request as URLRequest) {data,response,error in 
     let httpResponse = response as? HTTPURLResponse 

     if (error != nil) { 
     print(error) 
     } else { 
     print(httpResponse) 
     } 

     DispatchQueue.main.async { 
      //Update your UI here 
     } 

    } 
    dataTask.resume() 

私はあなたが言及ライン request.httpMethodは= "GET" いけないと思います

+2

GETリクエストでは、明示的な 'URLRequest'は必要なくSwift 3では' NSMutableURLRequest'ではなくネイティブ 'URLRequest'を使います。 – vadian

+0

あなたの知識を共有していただきありがとうございます。私は彼がリクエストhttpMethodを見逃したことを意味する。 –

+1

基本的に質問**のコードは**働いています、デフォルトはGETです。 – vadian