2016-01-22 41 views
1

这里是我的代码:Alamofire的Swift 2.0:如何使用X-WSSE授权发送http头文件?

> let uuid: CFUUIDRef = CFUUIDCreate(nil) 
    let nonce: CFStringRef = CFUUIDCreateString(nil, uuid) 
    let dateFormatter: NSDateFormatter = NSDateFormatter() 
    let timestamp = NSDate() 
    let secretKey = "DAqE6lBUgzxJRuR287GR" 
    let username = "us_demo003" 

    let formattedDate: String = dateFormatter.stringFromDate(timestamp) 


    let text = String((nonce as String)+formattedDate+secretKey) 

    let sha1 = text.sha1() 

    let passwordDigest = sha1.toBase64() 

    let headers = ["Username":username,"PasswordDigest": passwordDigest, "Nonce":(nonce as String), "Created":formattedDate] 

    let theUrlString = "url here" 

    manager.request(.GET, theUrlString, parameters: nil, encoding: ParameterEncoding.URL, headers: theHeaders).responseJSON { (result) -> Void in 
     print("BEGIN") 
     print("\n\n\n\n\n\n\n\nBEGIN\n\(result)\n\n\n\n\n\nEND") 
     print("STOP") 
    } 

我得到的结果如下:

SUCCESS: { 
data = ""; 
replyCode = 1; 
replyText = "No Authentication Header"; 

}

究竟如何发送认证头与Alamofire?我检查了github上的文档。有些事情我做得不对。

感谢

+0

代码中的'manager'如何?阿拉莫菲尔的一些包装? –

+0

呀。经理是Alamofire.Manager.sharedInstance。它是一个包装。 – Pleirosei

回答

1

相反,你要创建的Authorization头,其中Authorization是字典键,WWSE profile=\"username_token\"是值。然后您还需要将X-WSSE标题密钥设置为UsernameToken Username="admin", PasswordDigest="buctlzbeVflrVCoEfTKB1mkltCI=", Nonce="ZmMzZDg4YzMzYzRmYjMxNQ==", Created="2014-03-22T15:24:49+00:00"。有关WSSE身份验证

let token = "some generated token" 

let headers = [ 
    "Authorization": "WWSE profile=\"\(token)\"" 
    "X-WSSE": "UsernameToken Username=\"admin\", PasswordDigest=\"buctlzbeVflrVCoEfTKB1mkltCI=\", Nonce=\"ZmMzZDg4YzMzYzRmYjMxNQ==\", Created=\"2014-03-22T15:24:49+00:00\"" 
] 

更多信息,可以发现here

+0

谢谢cnoon!欣赏它。去给这个旋转。 – Pleirosei