Ich habe dieses Tutorial folgen: https://devdactic.com/parse-json-with-swift/ Und habe jede Anleitung so wie sie ist. Aber ich konnte einfach nicht die HTTP-Post-Anfrage funktionieren, da es scheint, dass mein API-Dienst den angeforderten Parameter nicht bekommen kann. Das ist also meine Httppost-Request-Methode:So erstellen Sie eine Post-Anfrage mit SwiftyJSON
private func makeHTTPPostRequest(path: String, body: [String: AnyObject], onCompletion: ServiceResponse) {
let request = NSMutableURLRequest(URL: NSURL(string: path)!)
// Set the method to POST
request.HTTPMethod = "POST"
do {
// Set the POST body for the request
let jsonBody = try NSJSONSerialization.dataWithJSONObject(body, options: .PrettyPrinted)
request.HTTPBody = jsonBody
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
if let jsonData = data {
let json:JSON = JSON(data: jsonData)
onCompletion(json, nil)
} else {
onCompletion(nil, error)
}
})
task.resume()
} catch {
// Create your personal error
onCompletion(nil, nil)
}
}
dann i eine Funktion erstellt haben, es zu nennen:
func registerNewUser(email: String,url: String, onCompletion: (JSON) -> Void) {
let route = baseURL + url
print(route)
let postItems:[String: String] = ["email": email]
print("postitems",postItems)
makeHTTPPostRequest(route, body: postItems, onCompletion: { json, err in
onCompletion(json as JSON)
print("response",json)
})
}
Dann ist es von Anmeldungen Controller Aufruf:
func requestSignUp()
{
if((emailField.text?.isEmpty) == false)
{
//performSegueWithIdentifier("showVerification", sender: signUpBtn)
let url = "user/signup"
RestApiManager.sharedInstance.registerNewUser(emailField.text! as String, url: url as String, onCompletion: {
(json: JSON) in if let results = json[0].array {
for entry in results {
print(entry)
}
}
})
}
}
der Druck zeigt die format der postitems unter register benutzer wie:
postitems ["em ail ": "dasdsd"]
Und meine Service-Antwort zeigt dies:
response {
"responseData" : {
},
"responseStat" : {
"status" : false,
"isLogin" : false,
"requestError" : [
],
"msg" : "The email field is required.",
"extra" : {
}
}
}
der E-Mail-Feld-Parameter ist E-Mail und erfolgreiche Einreichung wäre es so etwas wie dies zeigt:
{
"responseStat": {
"status": true,
"isLogin": false,
"msg": "Successfully Registered an, your password has been sent to your email",
"requestError": [],
"extra": {}
},
"responseData": ""
}
Sie gute sir sind ein Lebensretter! Vielen Dank! – Jakub