ich die folgenden curl Befehl wandelnde:Locken-Befehl NSURLRequest Swift
curl -X PUT -H "Authorization: Bearer 34kjsfhjbdjkh.jdhfds334jdshfksfs.kkjkjdsakjsd" -d "current_pwd=oldpassword&new_pwd1=newpassword&new_pwd2=newpassword" localhost:3000/updateDetails
in ein NSURLRequest
:
func updatePassword(passwordInfo : NSDictionary){
let urlString = generateURLString("/updateDetails")
if let url = NSURL(string: urlString) {
let currPwd = passwordInfo["currPwd"] as! String
let nPwd1 = passwordInfo["newPwd1"] as! String
let nPwd2 = passwordInfo["newPwd2"] as! String
var stringPost = "current_pwd=" + currPwd
stringPost += "&new_pwd1=" + nPwd1
stringPost += "&new_pwd2=" + nPwd2
let data = stringPost.dataUsingEncoding(NSUTF8StringEncoding)
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "PUT"
request.addValue("Bearer " + getSessionToken(), forHTTPHeaderField: "Authorization")
request.HTTPBody=data
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request){
(data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
if let httpResponse = response as? NSHTTPURLResponse {
if httpResponse.statusCode == 200 {
if let responseData = data {
let json = JSON(data: responseData)
}
}
}
}
task.resume()
}
}
Der Curl-Befehl funktioniert völlig in Ordnung. Ich benutze node.js Express-Framework für die Ausführung des Servers.
Der Kennwortwert wird auf dem Server empfangen, wenn er über den Befehl curl gesendet wird. Wenn die Anforderung über iOS gesendet wird, ist der newPwd1-Wert oder einer der drei Werte nicht definiert. Irgendeine Idee warum? Fehle ich etwas?
aktualisieren: Express 4 Konfiguration für Körper-Analyse ist wie folgt:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
Update 2: Dies scheint seltsam zu sein. Als ich versuchte, das Protokoll für die Anforderung Körper zum Drucken eine Locke Befehl: scheint der Anfrage Körper
{ current_pwd: 'oldPwd',
new_pwd1: 'newPwd',
new_pwd2: 'newPwd' }
Wenn das Protokoll ausgedruckt wird für die Anforderung Körper mit iOS NSURLRequest ich einen leeren Körper erhalten gültig zu sein: {}
Wenn Sie 'print (" stringPost is \ (stringPost) ")' direkt vor dem Erstellen von NSMutableURLRequest ausführen, hat stringPost die erwarteten Werte? –
Ja. Die zu sendende Zeichenfolge ist die gleiche wie im Befehl curl –
Was erscheint sonst in der 'req'-Struktur auf der express-Seite node.js, wenn die 'PUT' empfangen wird? Alles gültig und erwartet? –