Я хочу войти на сервер. Я уже написал это для Android, поэтому сервер работает нормально. Я хочу переписать его на iOS с помощью Swift, и массив params не получен на сервере. Он говорит:Быстрые параметры тела POST не принимаются
GET: массив ( ) POST: массив ( ) ФАЙЛЫ: массив ( ) RET: { "а": "Нет такой страницы", "г": 404}
Что я делаю неправильно?
func sendLogin(username : String,password : String,myCompletionHandler:(resp:NSURLResponse,d:NSData!,e:NSError!)->Void)->Void {
var session = NSURLSession.sharedSession();
NSLog("u:"+username+", pass:"+password);
var params = ["username":username, "password":password] as Dictionary<String, String> ;
NSLog(params.description);
var request : NSMutableURLRequest = NSMutableURLRequest();
var err: NSError?
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err);
request.URL = NSURL(string: url);
request.HTTPMethod = "POST";
request.setValue("multipart/form-data", forHTTPHeaderField: "Content-Type");
//request.addValue("application/json", forHTTPHeaderField: "Accept");
var task = session.dataTaskWithRequest(request,completionHandler:{
(data: NSData!,response:NSURLResponse!, error: NSError!) -> Void in
myCompletionHandler(resp:response,d:data,e:error);
});
task.resume();
/* NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(),
completionHandler:{
(response:NSURLResponse!, data: NSData!, error: NSError!) -> Void in
myCompletionHandler(resp:response,d:data,e:error);
});*/
}
UPDATE
Решение было то, что Victor Sigler сказал. Я перешел на Alamofire, и теперь он работает. Благодаря!
Я настоятельно рекомендую вам использовать Alamofire для HttpNetworking задач - Victor Sigler
Я настоятельно рекомендую вам использовать Alamofire для HttpNetworking задач –
Есть причина, вы используете '«многослойную/form-данные»' вместо из '' application/json '' для заголовка 'Content-Type'? Хотя ошибка 404, кажется, говорит о том, что ваш URL-адрес или маршрут неверны. – Erik
Правильный URL-адрес сервера отправляет ответ, потому что он пытается выяснить, что делать с параметрами. И в то время как массив params пуст, он ничего не может сделать, поэтому отправляет обратно 404. Приложение android использует multipart, поэтому я тоже попробовал его здесь .. но я тоже попытался с помощью приложения/json ... – MegaX