2017-10-11 3 views
-1

여기 내 DICT스위프트

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

의 사전 설정 PARAMS와 HTTP POST 요청을 만들려고하지만 난에 액세스하는 방법을 알고하지 않습니다에 HTTP POST 메서드를 통해 사전 데이터를 보내기 그녀는 내 완료 요청 함수의

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

오류가 무엇인가에 해결할 수 httpBody 로 설정? 또한 전송 매개 변수 인 JSON 구조를 추가하십시오. –

+0

오류가 http 본문을 설정하는 방법을 모르겠다 –

+0

let paramString = parameter? 이 라인에서 –

답변

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

당신은 협력 할 필요가 및 DataDictionary nvert이 방법

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