Swift 2 如何向 POST 请求添加授权 header

Swift 2 How do you add authorization header to POST request

发出特定 POST 请求时,Firefox (FF) 开发工具会显示请求。 header 名为 "Authorization",值为 "Bearer X",其中 X 是登录时收到的访问令牌。当我在 FF 中编辑此请求并删除 "Authorization" 行时,出现 400 错误。当我把它放回去时,200 一切都很好。但是,我还没有弄清楚如何在不获取 400 的情况下以编程方式设置此请求 header。

此外,FF 工具作为 "Request Body" of {"source":"desktop - profile 2015"}。我假设这是 JSON。我试过以多种方式发布此内容(请参阅代码)但没有成功。

// the following fields are set in the object "Request"'s initialization
let accessToken = "1,2,3456789012,3x4f560fa7a89e01a2;33ab4b4e5e67e8e9b9f0e1a23db45678f9a9a0ff" // replaced some characters for this StackOF posting
let authorization = "Bearer \(accessToken)"
let method = "POST"
let userID = "1234567"
let URL = NSURL(string: "https://www.somesite.com/apitun/profile/\(userID)hide")

// tried setting params to all of the following 4:
let params = ""
let params = "&_json={}"
let params = "&_json={\"source\":\"desktop profile - 2015\"}
let params = "&_json=%7B%22source%22%3A%22desktop%2Dprofile%202015%22%7D"

func execute() {
    let session = NSURLSession.sharedSession()
    let request = NSMutableURLRequest(URL: URL)
    if authorization != "" {
        request.addValue(authorization, forHTTPHeaderField: "Authorization")
    }

    request.HTTPMethod = self.method
    request.HTTPBody = self.params.dataUsingEncoding(NSUTF8StringEncoding)
    self.task = session.dataTaskWithRequest(request) {
        (data, response, error) in
        NSHTTPCookieStorage.sharedHTTPCookieStorage().setCookies(self.cookies, forURL: self.URL, mainDocumentURL: nil)
        if error == nil {
            do {
                self.responseHeaders = response as! NSHTTPURLResponse
                self.cookies = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookiesForURL(self.URL)!
                self.statusCode = self.responseHeaders.statusCode

                switch self.statusCode {

                case 200:
                    self.contentsOfURL = try NSString(contentsOfURL: self.URL, encoding: NSUTF8StringEncoding)
                case 400:
                    print("400: page not found")

                case 404:
                    print("404: page not found")

                case 407:
                    print("407: failed authenticate proxy credentials")

                default:
                    print("unable to get statusCode")

                }
            } catch {

            }
            self.isRequesting = false
        } else {
            print(error)
        }
    }
    self.task.resume()
}   
let request = NSMutableURLRequest(URL: NSURL(string: fullURL)!)

let accessToken = "your access token"
request.setValue("Bearer \(accessToken)", forHTTPHeaderField: "Authorization")