Swift POST 正文参数未接收

Posted

技术标签:

【中文标题】Swift POST 正文参数未接收【英文标题】:Swift POST body parameters not receiving 【发布时间】:2015-03-15 21:41:51 【问题描述】:

我想登录我的服务器。我已经为 android 编写了这个,所以服务器工作正常。我想使用 Swift 将其重写为 ios,并且服务器未收到 params 数组。它说:

GET: 数组 ( ) 发布:数组( ) 文件:数组( ) ret: "a":"没有这样的页面","r":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);


    );*/


更新

解决方案就是Victor Sigler 所说的。我改为 Alamofire,现在它正在工作。谢谢!

我强烈建议您将 Alamofire 用于 HttpNetworking 任务 – Victor Sigler

【问题讨论】:

我强烈建议您使用 Alamofire 进行 HttpNetworking 任务 您使用"multipart/form-data" 而不是"application/json" 作为Content-Type 标头是否有原因?虽然 404 错误似乎表明您的 URL 或路由不正确。 该 url 很好,服务器正在发送答案,因为它试图弄清楚如何处理参数。虽然 params 数组是空的,但它不能做任何事情,所以它会发回 404。android 应用程序正在使用 multipart,所以我也在这里尝试过。但我也尝试过 application/json ...... 【参考方案1】:

解决方案就是Victor Sigler 所说的。我改为 Alamofire,现在它正在工作。谢谢!

我强烈建议您将 Alamofire 用于 HttpNetworking 任务 – Victor Sigler

【讨论】:

以上是关于Swift POST 正文参数未接收的主要内容,如果未能解决你的问题,请参考以下文章

Swift 2.0 POST 正文空

带有正文的 Swift HTTP POST

Mux 处理程序未接收到从 curl post 传递的所有查询参数

如何在 ktor 中接收 POST 数组参数?

如何在 request.http POST 方法的正文中传递动态参数

如何在 Swift 3 中使用 Alamofire 在 POST 请求中将给定的 JSON 作为参数发送?