2017-03-09 18 views
2

パラメータを持つGETの場合、スイフト3でどのように計算されますか?パラメータ付きのGET要求

例:事前に

https://my-side.com/data?token=AS7F87SAD84889AD/ 

ありがとう!

+3

「NSURLQueryItem」。 – Larme

答えて

6

例がどのように要求に対してURLQueryItemを使用します。

func getRequest(params: [String:String]) { 

    let urlComp = NSURLComponents(string: "https://my-side.com/data")! 

    var items = [URLQueryItem]() 

    for (key,value) in params { 
     items.append(URLQueryItem(name: key, value: value)) 
    } 

    items = items.filter{!$0.name.isEmpty} 

    if !items.isEmpty { 
     urlComp.queryItems = items 
    } 

    var urlRequest = URLRequest(url: urlComp.url!) 
    urlRequest.httpMethod = "GET" 
    let config = URLSessionConfiguration.default 
    let session = URLSession(configuration: config) 

    let task = session.dataTask(with: urlRequest, completionHandler: { (data, response, error) in 
    }) 
    task.resume() 
} 


getRequest(params: ["token": "AS7F87SAD84889AD"]) 
+2

私が正しく覚えていれば、 'items'が空で(パラメータなし)、それは"? " urlComp.queryItems = items'は、 'items'が空でない場合にのみ有効です。 – Larme

+0

@Larmeあなたは正しいです。今すぐコードを修正する。 –

1

さて、私はこのように私のHTTPリクエストを処理しています:

func getData(completionHandler: @escaping ((result:Bool)) ->()) { 

     // Asynchronous Http call to your api url, using NSURLSession: 
     guard let url = URL(string: "https://my-side.com/data?token=AS7F87SAD84889AD/") else { 
      print("Url conversion issue.") 
      return 
     } 

     var request = URLRequest(url: url) 

     request.httpMethod = "GET" 

     URLSession.shared.dataTask(with: request, completionHandler: { (data, response, error) -> Void in 
      // Check if data was received successfully 
      if error == nil && data != nil { 
       do { 
        // Convert NSData to Dictionary where keys are of type String, and values are of any type 
        let json = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as! [String:AnyObject] 

        //do your stuff 

        completionHandler(true) 

       } catch { 
        completionHandler(false) 
       } 
      } 
      else if error != nil 
      { 
       completionHandler(false) 
      } 
     }).resume() 
    } 
+0

paramsをリクエストにどのように追加しますか? –

+0

urlにはパラメータが含まれています。 – Kingalione

+1

フレキシブルではなくハードコーディングされているため、正しく動作しません –

関連する問題