2017-10-11 112 views
-1

我試圖與在字典中設置PARAMS HTTP POST請求這裏是我的字典發送通過HTTP POST方法字典數據斯威夫特

let parameters = [ 
        ["name": "tag","value": "login"], 
        ["name": "email","value": "[email protected]"], 
        ["name": "password","value": "aaaa"] 
        ] 

,但我不知道如何訪問它她是我的完整請求功能

func data_request(_ url:String) 
{ 
    let parameter = [ 
        ["name": "tag","value": "login"], 
        ["name": "email","value": "[email protected]"], 
        ["name": "password","value": "aaaa"] 
        ] 
    let url:NSURL = NSURL(string: url)! 
    let session = URLSession.shared 

    let request = NSMutableURLRequest(url: url as URL) 
    request.httpMethod = "POST" 

    let paramString = parameter? 
    request.httpBody = paramString.data(using: String.Encoding.utf8) 

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

     guard let _:NSData = data as NSData?, let _:URLResponse = response, error == nil else { 
      print("error") 
      return 
     } 

     if let dataString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue) 
     { 
      print(dataString) 
     } 
    } 

    task.resume() 

} 
+0

有什麼錯誤解決?另外,嘗試添加發送參數JSON結構。 –

+0

錯誤是我不知道如何設置http身體 –

+0

讓paramString =參數?在這一行 –

回答

0

需要轉換字典JSON字符串象下面這樣:

let jsonData = try JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted) 

After that pass to the http.Body 

// insert json data to the request 

request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") 

request.HTTPBody = jsonData 

let task = NSURLSession.sharedSession().dataTaskWithRequest(request){ data, response, error in 
      if error != nil{ 
       print("Error -> \(error)") 
       return 
      } 

      do { 
       let result = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [String:AnyObject] 

       print("Result -> \(result)") 

      } catch { 
       print("Error -> \(error)") 
      } 
     } 

     task.resume() 
     return task 



    } catch { 
     print(error) 
    } 
0

您需要合作nvert的DictionaryData並將其設置爲httpBody 你可以用這種方式

let paramData = try? JSONSerialization.data(withJSONObject: parameter, options: []) request.httpBody = paramData