ios - 在 Swift3 中发送 JSON POST 请求

标签 ios json swift nsurlsession

在我的应用程序中,我正在尝试使用 json 数据发出 http post 请求。以下json必须传给api

{ 
 "Password":"123456",   
 "Email":"test@gmail.com"
}

这是我完成这个任务的代码

let dict = ["Email": "test@gmail.com", "Password":"123456"] as [String: Any]
if let jsonData = try? JSONSerialization.data(withJSONObject: dict, options: []) {


    let url = NSURL(string: "http://xxxxxxxxx.net/api/Login")!
    let request = NSMutableURLRequest(url: url as URL)
    request.httpMethod = "POST"

    request.httpBody = jsonData

    let task = URLSession.shared.dataTask(with: request as URLRequest){ data,response,error in
        if error != nil{
           print(error?.localizedDescription)
           return
        }

        do {
            let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary

            if let parseJSON = json {
                   let resultValue:String = parseJSON["success"] as! String;
                   print("result: \(resultValue)")
                   print(parseJSON)
                   }
            } catch let error as NSError {
                 print(error)
            }        
       }          
     task.resume()
    }

我收到以下错误

Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo={NSDebugDescription=No value.}

响应数据为空。我做错了什么,或者我在代码中遗漏了什么?

最佳答案

尝试两件事:

首先:

jsonData = try? JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)

如果您的数据已转换为 JSON,则添加日志。将您的数据转换为字符串并打印值。

同时添加

request.addValue("application/json", forHTTPHeaderField: "Content-Type")

httpBody 之前。有时我们必须在我们的请求中告诉服务器我们正在发布 JSON 数据。

希望对您有所帮助!!

快乐编码!

关于ios - 在 Swift3 中发送 JSON POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40676847/

相关文章:

ios - 添加 NSConstraint 的 IBOutlet 后应用崩溃

ios - 无法设置自定义类名

ios - 创建播放声音的按钮,收到 NSException 错误

ruby-on-rails - 如何将 sqlite 数据库转换为 JSON

ios - UI 旋转手势识别器捕捉直角

java - libgdx 是否能够同时识别 20 - 30 个手指?

json - 使用 jq 通过匹配多个对象来过滤 JSON 对象列表

javascript - Ajax Get请求找不到JSON文件

ios - 快速清空请求正文

ios - Swift:AVAudioPlayer 不播放,线程可能出现错误?