2015-07-20 158 views
0

如何传递json作为参数字符串。我已经尝试通过传递JSON如下,但它会抛出错误,如AuthenticateUser: Invalid JSON primitive如何在swift中传递json字符串作为参数

let jsonString = "{\"user\":\"usr\",\"password\":\"pass\"}" 

     var urlStr = "http://testserver/AuthenticateUser?data=\(jsonString)" 


     var url = NSURL(string: urlStr) 
     let request = NSMutableURLRequest(URL: url!) 
     request.URL = url 
     request.HTTPMethod = "POST" 
     request.addValue("application/xml", forHTTPHeaderField: "Content-Type") 
     request.addValue("application/xml", forHTTPHeaderField: "Accept") 

     let task = NSURLSession.sharedSession().dataTaskWithRequest(request) 
      { 
       (data, response, error) in 

       var error: NSError? 
       if data != nil { 
        var reply = NSString(data: data!, encoding: NSUTF8StringEncoding) 
        println("reply >> \(reply)") 
       } 
     } 
     task.resume() 

回答

0

我给你带来的答案是将json参数作为字符串传递给URL。

var jsonString = "{\"user\":\"usr\",\"password\":\"pass\"}" 
    if let data = jsonString.dataUsingEncoding(NSUTF8StringEncoding)  
    { 
     var error: NSError? 
     var json = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.allZeros, error: &error) as? NSDictionary 
     if error != nil 
     { 
     println(error) 
     } 
     else 
     { 
     println(json) 
     } 
     var strUser = json?.valueForKey("user") as String 
     var strPassword = json?.valueForKey("password") as String 

     println(strUser) 
     println(strPassword) 

     var url = "http://testserver/AuthenticateUser?data=" 
     var urlUserParameter = "user=" 
     var urlPasswordParameter = "&password=" 
     var appendString = "\(url)\(urlUserParameter)\(strUser)\(urlPasswordParameter)\(strPassword)" 
       //OR 
     var appendStringOne = url + urlUserParameter + strUser + urlPasswordParameter + strPassword 

     println(appendString) 
     println(appendStringOne) 

    } 

说明

I converted JSON string to NSDictionary. 
    Then i get value using key 
    Finally i append all these string and now we have URL with parameters. 
相关问题