无法设置URLRequest授权标头

由于swift 3更新,我将我的请求从NSMutableURLRequest更改为URLRequest。 之后,所有我的请求停止工作,由于凭证无效问题。 已经尝试过,search一切。 我的服务继续和以前一样,并从请求模拟器testing我的请求,并没有问题。

let url : NSString = "http://url.service.com/method?param=\(name)" as NSString var request = URLRequest(url: URL(string: url.addingPercentEscapes(using: String.Encoding.utf8.rawValue)!)!) request.httpMethod = "POST" request.setAuthorizationHeader() URLSession.shared.dataTask(with: request) {data, response, err in do { //something } catch let error1 as NSError { //something } }.resume() 

我的setAuthorizationHeader()扩展

 extension URLRequest { mutating func setAuthorizationHeader(){ let data = "user:password".data(using: String.Encoding.utf8) let base64 = data?.base64EncodedString(options: []) setValue("Basic \(base64)", forHTTPHeaderField: "Authorization") } } 

在进行string插值之前,您不打开您的stringvariables,因此将可选的string描述传递给forHTTPHeaderField。 检查提案:SE-0054。 只要确保你安全地打开你的可选使用,如果让:

 if let base64 = data?.base64EncodedString(options: []) { setValue("Basic \(base64)", forHTTPHeaderField: "Authorization") }