我正在尝试使用自签名证书向开发服务器发出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,也会出现错误:
PS:当我从邮递员那里打电话时,路线工作正常。
答案 0 :(得分:1)
request.HTTPBody
属性必须是NSData
对象。如果要发送JSON,数据对象应包含一系列Unicode字符(最好是UTF-8),这是您的序列化JSON表示。
此外,您还应将Content-Type
标题相应地设置为application/json
。