如何通过Raw Json在Swift中发布请求



嗨,我是swift的新手,请放过我。

我需要发布到特定的API,但API不是key value对的粉丝,API期望raw json作为发布数据

我在这里使用这个图书馆来提出邮寄请求。

这是我的代码

func postItem(itemname: String, itemnumber: Int, itemcode:String, url:String, baseURL:String, completion: (result: Dictionary<String, AnyObject>) -> ()){
        var dict: Dictionary<String, AnyObject>!

        var params: Dictionary<String,AnyObject> =  ["parentItem": ["itemname":itemname,"itemnumber":itemnumber,"itemcode":code]]
        let data = NSJSONSerialization.dataWithJSONObject(params, options: NSJSONWritingOptions.PrettyPrinted, error: nil)
        let string = NSString(data: data!, encoding: NSUTF8StringEncoding)
        var request = HTTPTask()
        request.requestSerializer = JSONRequestSerializer()
        request.requestSerializer.headers[headerKey] = getToken() //example of adding a header value

        request.POST(url, parameters: params, success: {(response: HTTPResponse) in
            if response.responseObject != nil {
                let data = response.responseObject as NSData
                var error: NSError?
                dict = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &error) as Dictionary<String, AnyObject>;
                completion(result: dict)
            }
            },failure: {(error: NSError, response: HTTPResponse?) in
                dict = ["error" : "error" ]
                completion(result: dict)
        })
    }

我需要在api 中传递这种原始json

例如。{"parentItem": {"itemname":"Cocoa","itemnumber":123,"itemcode":"cocoa-12-A"}}

但当我打印我的参数时,因为它是字典,它会生成类似的东西

["parentItem": ["itemname"="Cocoa"; "itemnumber"=123; "itemcode"="cocoa-12-A"]]

我只是无法将params转换为JSON,因为我使用的库需要dictionary,而且我很难创建自己的类。

有人能帮我吗?任何意见和建议都可以。提前谢谢。

为什么不使用Alamofire框架?它非常好,可以发送标准json

最新更新