2017-10-11 74 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