2016-01-22 72 views
0

即时尝试使用alamofire库,但我有一个问题,我想添加下一个jsonString到请求的身体它总是给我相同的400状态码,可以有人帮助我请,这是字符串和我的代码:添加一个jsonString到Alamofire请求

Json字符串:{“moment”:{“name”:“hola”,“begin”:“12-5-2005 0:0”,“end” : “22-4-2007 0:0”, “存储”:假}}

,这是我的实际代码,感谢

   let jsonString = "{\"moment\":{" + "\"name\" : " + "\"" + nombre + "\"" + ",\"begin\" : \"" + fechaIni + "\"," + 
        "\"end\" : " + "\"" + fechaFin + "\"" + "," + "\"stored\" : false" + "}" + "}" 

       let request = NSMutableURLRequest(URL: NSURL(string: "http://whatmatters.deploy-cd.com/api/me/moments.json")!) 
       request.HTTPMethod = "POST" 
       request.setValue("application/json", forHTTPHeaderField: "ContentType") 
       request.HTTPBody = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) 
       Alamofire.request(request).authenticate(user: user, password: pass) 
        .response { resp in 
         print(resp) 

       } 

回答

0

UPDATE 你必须连载你的数据在JSON

这里应该怎么样子:

let jsonString = "{\"moment\":{" + "\"name\" : " + "\"" + nombre + "\"" + ",\"begin\" : \"" + fechaIni + "\"," + 
       "\"end\" : " + "\"" + fechaFin + "\"" + "," + "\"stored\" : false" + "}" + "}" 

      let request = NSMutableURLRequest(URL: NSURL(string: "http://whatmatters.deploy-cd.com/api/me/moments.json")!) 
      request.HTTPMethod = "POST" 
      request.setValue("application/json", forHTTPHeaderField: "ContentType") 
      let stringData = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) 
      do { 
     let jsonData:NSData? = try NSJSONSerialization.JSONObjectWithData(stringData!, options: .AllowFragments) as? NSData 
     request.HTTPBody = jsonData 
    } catch let caught as NSError { 
     print(caught) 
    } 
      Alamofire.request(request).authenticate(user: user, password: pass) 
       .response { resp in 
        print(resp) 

      } 
0

我这样做是为了发送JSON后参数的方法,是把参数在Dictionary这样的:

let parameters = [ 
       "moment" : [ 
        "name" : nombre, 
        "begin" : fechaIni, 
        "end" : fechaFin, 
        "stored" : false, 

       ]] 

因此,所有的代码会是这样

var request = NSMutableURLRequest(URL: NSURL(string: "http://whatmatters.deploy-cd.com/api/me/moments.json")!) 
request.HTTPMethod = "POST" 
request.setValue("application/json", forHTTPHeaderField: "ContentType") 
// request.HTTPBody = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) 
let parameters = [ 
       "moment" : [ 
        "name" : nombre, 
        "begin" : fechaIni, 
        "end" : fechaFin, 
        "stored" : false, 

       ]] 

request = Alamofire.ParameterEncoding.JSON.encode(request, parameters: parameters).0 
Alamofire.request(request).authenticate(user: user, password: pass) 
       .response { resp in 
        print(resp) 
      } 

注:请介意的字典中的值的数据类型,并在你的JSON必需的,也就是说,如果你需要的所有的JSON值一String请投的字典中的值是String