J'essaye d'envoyer une requête put sur mon serveur, mais la réponse que je reçois est bizarre.Swift 3 n'arrive pas à comprendre que mon http ne fonctionne pas
Si j'ajoute que cela postier:
{
"firstName": req.body.firstName,
"lastName": req.body.lastName,
"email": req.body.email,
"role": req.body.role,
"birthday": new Date(req.body.birthday),
"sex": req.body.sex,
"password": pw
}
je reçois un 200 de mon serveur. Cependant, dans ma demande Swift je reçois un 500.
Ma méthode Put ressemble à ceci:
func putUser(accessToken: String, refreshToken: String, emailCurrent: String, firstName: String, lastName: String, emailNew: String,
role: Int, sex: String, password: String){
print("vi kører putUser med denne accessToken \(accessToken) og refreshToken \(refreshToken)")
let urlPath = "http://xxxxxxxxxxxxxx/api/users/user/\(emailCurrent)"
let url = NSURL(string: urlPath)
let session = URLSession.shared
let request = NSMutableURLRequest(url: url as! URL)
request.addValue(accessToken, forHTTPHeaderField: "accessToken")
request.addValue(refreshToken, forHTTPHeaderField: "refreshToken")
request.httpMethod = "PUT"
let postString = "firstName=\(firstName)&lastName=\(lastName)&email=\(emailNew)&role=\(role)&birthday=2010-09-08&sex=\(sex)&password=\(password)"
// let strinng = "firstName=\(firstName)&lastName=\(lastName)&email\(emailNew)&role=\(role)&birthday=2010-09-08&sex=\(sex)&password=\(password)"
print()
print()
print("Here is postString from putUser: \(postString)")
request.httpBody = postString.data(using: String.Encoding.utf8)
let task = session.dataTask(with: request as URLRequest, completionHandler: {data, response, error -> Void in
print("Task completed \(data) and response is xxxx")
// print all info as a string. ---
let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print("responseString = \(responseString!)")
})
task.resume()
}
Les données de réponse que je reçois est comme suit:
Here is postString from putUser:
firstName=abcd&lastName=bb&[email protected]&role=1&birthday=2010-09-08&sex=female&password=123
Task completed Optional(169 bytes) and response is xxxx
responseString = <!DOCTYPE html><html><head><title></title><link rel="stylesheet" href="/stylesheets/style.css"></head><body><h1>Unexpected token f</h1><h2></h2><pre></pre></body></html>
Je sens qu'il est à cause de mon postString, cependant je ne peux pas voir la différence entre le httpBody dans mon facteur, et celui ci-dessus.
Merci d'avance!
Essayez de faire quelque chose comme ça http://stackoverflow.com/questions/41762597/post-request-in-objective-c-with-lyft-api- access-token # comment70716705_41762597 Parce que vous formatez vos paramètres en mode GET, dans POSTMAN, c'est comme JSON. – Larme
@Larme cela a fonctionné! Je devais juste ajouter request.addValue ("application/json", forHTTPHeaderField: "Content-Type") et votre suggestion a fonctionné. Merci! –