AFHTTPClient, AFNetworking 2.0'a geçtiğinde AFHTTPRequestOperationManager/AFHTTPSessionManager tarafından değiştirildi (geçiş kılavuzunda belirtildiği gibi). AFHTTPSessionManager'ı kullanırken karşılaştığım ilk sorun, hata bloğundaki yanıtın gövdesini nasıl alacağımızdır? Ben yanıtın durum kodu almak istediğiniz başarı bloğunda AFNetworking 2.0 AFHTTPSessionManager: Hata kodu blokta durum kodu ve yanıtı nasıl elde edilir?
[self.sessionManager POST:[endpoint absoluteString] parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
// How to get the status code?
} failure:^(NSURLSessionDataTask *task, NSError *error) {
// How to get the status code? response?
}];
:
İşte bir örnek. Hata bloğunda, hem yanıtlayanın durum kodunu hem de içeriği (sunucu tarafında hatayı açıklayan bu durumda JSON olan) almak istiyorum.
NSURLSessionDataTask, statusCode alanı olmayan NSURLResponse türünde bir yanıt özelliğine sahiptir. Şu anda böyle statusCode almak mümkün değilim:
[self.sessionManager POST:[endpoint absoluteString] parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
// How to get the status code?
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response;
DDLogError(@"Response statusCode: %i", response.statusCode);
}];
Ama bu bana çirkin görünüyor. Ve hala yanıt veren kişinin vücudunu anlayamıyor.
Herhangi bir öneriniz var mı?
[AFURLSessionManager dataTaskWithRequest: completionHandler:]' hangi aynı NSURLResponse 'yi (ve oraya da göndermelisiniz) geçiyor –
Bu durum statusCode'u nasıl alacağınızı gösteriyor. Ne yazık ki NSHTTPURLResponse, hata bloğunda gövdeyi/verileri içermiyor :( – Oleksandr
Görevin AFNetworkingTaskDidFinishResponseDataKey bildiriminde bulunan userInfo anahtarında, yanıtın, AFNetworkingTaskDidFinishNotification bildirimine göz atması gibi görünüyor. –