[英]add header to URLSessionWebSocket
I'm working with URLSessionWebSocket
to learn more about it.我正在使用
URLSessionWebSocket
来了解更多信息。 I'm using this class for it我正在使用这个 class
my question is, how can I add authentication header to it?我的问题是,如何添加身份验证 header 到它? (
Content-Type
, ACCOUNT-AUTHORIZATION
and SUB-AUTHORIZATION
) (
Content-Type
, ACCOUNT-AUTHORIZATION
和SUB-AUTHORIZATION
)
thank you so much太感谢了
lass WebSocketConnector : NSObject {
var didOpenConnection : (()->())?
var didCloseConnection : (()->())?
var didReceiveMessage : ((_ message : String)->())?
var didReceiveData : ((_ message : Data)->())?
var didReceiveError : ((_ error : Error)->())?
var urlSession : URLSession!
var operationQueue : OperationQueue = OperationQueue()
var socket : URLSessionWebSocketTask!
init(withSocketURL url : URL){
super.init()
urlSession = URLSession(configuration: .default, delegate: self, delegateQueue: operationQueue)
socket = urlSession.webSocketTask(with: url)
}
private func addListener(){
socket.receive {[weak self] (result) in
switch result {
case .success(let response):
switch response {
case .data(let data):
self?.didReceiveData?(data)
case .string(let message):
self?.didReceiveMessage?(message)
@unknown default:
break
}
case .failure(let error):
self?.didReceiveError?(error)
}
self?.addListener()
}
}
}
extension WebSocketConnector : WebSocketProtocol {
func establishConnection(){
socket.resume()
addListener()
}
func disconnect(){
socket.cancel(with: .goingAway, reason: nil)
}
func send(message: String) {
socket.send(URLSessionWebSocketTask.Message.string(message)) {[weak self] (error) in
if let error = error {
self?.didReceiveError?(error)
}
}
}
func send(data: Data) {
socket.send(URLSessionWebSocketTask.Message.data(data)) {[weak self] (error) in
if let error = error {
self?.didReceiveError?(error)
}
}
}
}
extension WebSocketConnector : URLSessionWebSocketDelegate {
func urlSession(_ session: URLSession, webSocketTask: URLSessionWebSocketTask, didOpenWithProtocol protocol: String?) {
didOpenConnection?()
}
func urlSession(_ session: URLSession, webSocketTask: URLSessionWebSocketTask, didCloseWith closeCode: URLSessionWebSocketTask.CloseCode, reason: Data?) {
didCloseConnection?()
}
}
Just wrap your URL with an URLRequester:只需使用 URLRequester 包装您的 URL:
var request = URLRequest(url: url)
request.addValue("xafq", forHTTPHeaderField: "Authorization")
and call:并致电:
URLSession.shared.webSocketTask(with: request)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.