2015-03-15 4 views
0

Я хочу войти на сервер. Я уже написал это для 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

+3

Я настоятельно рекомендую вам использовать Alamofire для HttpNetworking задач –

+0

Есть причина, вы используете '«многослойную/form-данные»' вместо из '' application/json '' для заголовка 'Content-Type'? Хотя ошибка 404, кажется, говорит о том, что ваш URL-адрес или маршрут неверны. – Erik

+0

Правильный URL-адрес сервера отправляет ответ, потому что он пытается выяснить, что делать с параметрами. И в то время как массив params пуст, он ничего не может сделать, поэтому отправляет обратно 404. Приложение android использует multipart, поэтому я тоже попробовал его здесь .. но я тоже попытался с помощью приложения/json ... – MegaX

ответ

0

Решение было то, что Victor Sigler сказал. Я перешел на Alamofire, и теперь он работает. Благодаря!

Я настоятельно рекомендую вам использовать Alamofire для HttpNetworking задач - Victor Sigler

Смежные вопросы