【问题标题】:How to POST NSMutableURLRequest alogn with custome header fields using Alamofire如何使用 Alamofire POST NSMutableURLRequest 与自定义标头字段对齐
【发布时间】:2014-11-19 19:55:25
【问题描述】:

我正在尝试通过 Alamofire 发布 NSMutableURLRequest 请求,但无法在 HTTP 标头中设置这些字段值。有什么帮助吗?

    var params = ["username":"veeru@gamil.com", "password":"Pasword123!", "csrfmiddlewaretoken":csrfToken] as Dictionary<String, String>

    var post:NSString = "csrfmiddlewaretoken=Basic \(csrfToken)&username=veeru@gmail.com&password=Password123!"
    var postData:NSData = post.dataUsingEncoding(NSASCIIStringEncoding)!

            var URL = NSURL(string: "https://myurl/account/login")
            var mutableURLRequest = NSMutableURLRequest(URL: URL!)
            mutableURLRequest.setValue("Content-Type", forHTTPHeaderField: "application/x-www-form-urlencoded")
            mutableURLRequest.setValue("keep-alive", forHTTPHeaderField: "Connection")
            mutableURLRequest.setValue("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36", forHTTPHeaderField: "User-Agent")
            mutableURLRequest.setValue("Code", forHTTPHeaderField: "X-CSRFToken")
                           mutableURLRequest.HTTPMethod = "POST"
            mutableURLRequest.HTTPBody = postData
            let username = "veeru@gmail.com"
            let password = "Password123!"

            let loginString = NSString(format: "%@:%@", username, password)
            let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)!
            let base64LoginString = loginData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.allZeros)
            mutableURLRequest.setValue(base64LoginString, forHTTPHeaderField: "Authorization")
            let manager = Alamofire.Manager.sharedInstance // or create a new one
            let request = manager.request(mutableURLRequest)
            Alamofire.request(.POST, "https://url/account/login",parameters: params)
                    .responseString{ (request, response, data, error) in
                        println("Request :\(request)\n\n")
                        println("Response: \(response)\n\n")
                        println("Data\(data)")
                        println("Error : \(error)")
            println("Done")
            }

【问题讨论】:

    标签: swift ios8 nsmutableurlrequest alamofire


    【解决方案1】:

    当您经历了所有的麻烦来实际制作NSURLRequest 对象时,为什么还要使用Alamofire.request(.POST, "https://url/account/login",parameters: params) 行?

    删除它:

    let request = manager.request(mutableURLRequest)
    request.responseString{ (request, response, string, error) in
      // ...
    }
    

    【讨论】:

    • 谢谢马特!!!如何在函数中使用此响应会话发送其他 HTTP 请求。例如在登录功能中我得到了 Session ,我需要使用该会话未来的请求。
    猜你喜欢
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 2014-09-28
    • 1970-01-01
    相关资源
    最近更新 更多