2014-12-05 11 views
5

Tôi cần thiết đặt chuỗi tác nhân người dùng tùy chỉnh thành sharedSession of NSURLSession. tức là bất cứ khi nào tôi gọi [NSURLSession sharedSession], theo mặc định, nó sẽ chứa cấu hình tùy chỉnh của tôi và tôi sẽ không cần phải đặt cấu hình này mỗi lần.Đặt cấu hình của NSURLSession được chia sẻPhiên bản

tôi có thể thiết lập cấu hình để phiên như,

NSURLSession * session = [NSURLSession sharedSession]; 
NSString * userAgent = @"My String"; 
session.configuration.HTTPAdditionalHeaders = @{@"User-Agent": userAgent}; 

Nhưng tôi không thể tìm thấy làm thế nào để thiết lập cấu hình để sharedSession có thể sử dụng bất cứ lúc nào trong mã.

+0

Tôi đang ở trong tình huống tương tự, tôi cần thay đổi một số mã thông báo truy cập trong cấu hình sau khi người dùng mới đăng nhập. Vì vậy, bạn có tìm cách thay đổi không và tôi có đọc câu trả lời không. –

Trả lời

11

Thats vì bạn không thể sửa đổi sharedSession. Hãy tưởng tượng như thể sharedSession là thiết bị iOS sharedSession và được sử dụng bởi tất cả các Apps và framework khác. Làm cho tinh thần cho nó là không thể cấu hình phải không? Các documentation về nó rằng:

Buổi chia sẻ sử dụng hiện thiết NSURLCache toàn cầu, NSHTTPCookieStorage, và các đối tượng NSURLCredentialStorage và dựa vào cấu hình mặc định.

Điều bạn muốn làm là xác định cấu hình tùy chỉnh nghĩa là bạn sẽ cần đối tượng phiên của riêng bạn với cấu hình riêng. Thats lý do tại sao có một nhà xây dựng cụ thể đem lại cho bạn những gì bạn cần:

+ (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration 
            delegate:(id<NSURLSessionDelegate>)delegate 
          delegateQueue:(NSOperationQueue *)queue 

Đối với ngắn gọn, bạn có thể sử dụng [NSURLSessionConfiguration defaultSessionConfiguration] để tạo ra một cấu hình cơ bản và sau đó thiết lập các tiêu đề bổ sung đó.

Đương nhiên bạn sẽ chịu trách nhiệm giữ lại phiên giao dịch vv

1

Tôi cũng đã bị mắc kẹt trong vấn đề này, tôi đã phải thay đổi Authorization trong httpHeaders. Daniel trả lời là đúng, chúng tôi không thể thay đổi NSURLSession và cấu hình của nó một lần thiết lập. Giải pháp là đặt tiêu đề trong đối tượng NSMutableURLRequest như

var request = NSMutableURLRequest() 
request.setValue("YourAccessToken", forHTTPHeaderField: "Authorization") 

Đã trả lời nó có thể giúp ai đó.

1

Theo @Daniel Galasko: tôi thêm như sau: (chỉ cần cập nhật như nhanh chóng 2,3 mã của nó)

let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration() 
let additionalHeadersDict = ["User-Agent": "User name that you want", 
          "Accept-Language":"lamguages", 
          "Accept-Encoding": "Encoding type" ] 
sessionConfiguration.HTTPAdditionalHeaders = additionalHeadersDict 

Cảm ơn một lần nữa để @Daniel Galasko. Vui lòng bỏ phiếu cho câu trả lời của anh ấy nếu bạn thấy tôi hữu ích.

Các vấn đề liên quan