iOS9 + Swift:如何使用JSON值设置发布请求的正文?

时间:2016-05-18 11:46:23

标签: ios swift networking swifty-json self-signed

我正在尝试使用自签名证书向开发服务器发出HTTP Post请求。这是进行POST调用的函数:

func makeHTTPPostRequest(path: String, body: JSON, onCompletion: (JSON?, NSError?) -> Void) {

    let request = NSMutableURLRequest(URL: NSURL(string: path)!)
    request.HTTPMethod = "POST"

    // I am using SwiftyJSON
    do {
        request.HTTPBody = try body.rawData()
    } catch _ { }

    let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
    let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue:NSOperationQueue.mainQueue())

    let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
        var json: JSON?
        if let _data = data {
            json = JSON(data: _data)
        }
        onCompletion(json, error)
    })
    task.resume() 
}

当我发出POST请求时,服务器返回我"空字段"即使我已正确设置请求的HTTPBody,也会出现错误:

enter image description here

PS:当我从邮递员那里打电话时,路线工作正常。

1 个答案:

答案 0 :(得分:1)

request.HTTPBody属性必须是NSData对象。如果要发送JSON,数据对象应包含一系列Unicode字符(最好是UTF-8),这是您的序列化JSON表示。

此外,您还应将Content-Type标题相应地设置为application/json