Отправка запроса JSON POST в Swift3

9

В моем приложении я пытаюсь сделать HTTP-запрос с данными json. Следующий json должен быть перенесен на api

{ 
 "Password":"123456",   
 "Email":"[email protected]"
}

Вот мой код для этой задачи

let dict = ["Email": "[email protected]", "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.}

Данные ответа пустые. Что я делаю неправильно, или я пропустил что-то в своем коде?

  • 1
    Каковы результаты print(response) и print(json) ?
  • 0
    результат print (response) является необязательным (<NSHTTPURLResponse: 0x60800002d040> {URL: xxxxxxxxx.net/api/Login } {код состояния: 415, заголовки {"Content-Length" = 0; дата = "пт, 18 ноября 2016 г. 12:20:21 GMT "; Сервер =" Microsoft-IIS / 8.0 ";" Set-Cookie "=" ARRAffinity = 173cb9da56ba660395def768bf42f0686b2eba6731b99a6d8f2d08471ce133ed; Path = /; Домен = plubmeradmin.azurewebsites X.-By-By ".net ""; "ASP.NET";}}) но print (json) пуст
Показать ещё 3 комментария
Теги:
nsurlsession

1 ответ

16
Лучший ответ

Попробуйте две вещи:

Сначала:

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

затем добавьте журналы, если ваши данные преобразуются в JSON. Преобразуйте свои данные в String и распечатайте значение.

Также добавьте

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

до httpBody. Иногда нам приходится сообщать серверу в нашем запросе, что мы публикуем данные JSON.

Надеюсь, это поможет вам!

Счастливое кодирование!

  • 0
    Работает, спасибо большое

Ещё вопросы

Сообщество Overcoder
Наверх
Меню