2016-10-07 4 views
3

Есть и другие вопросы с похожими названиями, но ни один из них не помог мне. Я отправить PUT запрос на сервер для того, чтобы изменить статус назначения, поэтому я сделал этот метод -(void)appointmentStatusChangedTo:(NSString *)statusID atAppointmentID:(NSString *)appointmentID В котором я устанавливаю URL и параметрыAFNetworking 3.0 Данные не могут быть прочитаны, потому что они не в правильном формате

NSString *string = [NSString stringWithFormat:@"%@/API/Appointments/3",BaseURLString]; 
    NSDictionary *para = @{ 
          @"AppointmentStatusId":statusID, 
          @"ID":appointmentID 
          }; 

Тогда я сделал URL запрос в

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 

    NSMutableURLRequest *req = [[AFJSONRequestSerializer serializer] requestWithMethod:@"PUT" URLString:string parameters:para error:nil]; 

После того, что я устанавливаю заголовок для маркеров авторизации в

NSString *token = [NSString stringWithFormat:@"Bearer %@",[[NSUserDefaults standardUserDefaults] objectForKey:@"userToken"]]; 

    [req setValue:token forHTTPHeaderField:@"Authorization"]; 

Итак, наконец, я звоню как

[[manager dataTaskWithRequest:req completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error){ 
     if (!error) { 
      if (response) { 
       NSLog(@"Respose Object: %@",responseObject); 
       [self.patientsAppointmentsTableView reloadData]; 
      } 
     } 
     else { 
    // NSLog(@"Error: %@, %@, %@", error, response, responseObject); 
    NSLog(@"Error: %@", error.localizedDescription); 
} 
     }] resume]; 

Теперь она успешно передавать данные на сервер, но в ответ я получаю

Error: The data couldn’t be read because it isn’t in the correct format.

Я не уверен, что ответ может выглядеть в тот момент, когда я не в контакт с бэкэндом. Но, насколько я помню, это было просто. 1. Скажите мне, как обращаться с любым типом ответа с помощью AFNetworking 3.0 или с любым изменением моего кода.

+0

Что вы AFResponseSerializer? – Larme

+0

@ Larme, какая альтернатива? и да ответ не JSON. Что я должен там положить. –

+0

Можете ли вы показать мне свой ответ? –

ответ

2

пытаются использовать ниже код:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 

AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer]; 
[serializer setStringEncoding:NSUTF8StringEncoding]; 

manager.requestSerializer=serializer; 
manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 
0

Попробуйте следующий код, используя Afnetworking 3.0

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
    manager.responseSerializer = [AFJSONResponseSerializer serializer]; 
    [manager GET:url parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) { 
     NSLog(@"%@",responseObject); 
     self.responseHandlers(YES,responseObject); 
    } failure:^(NSURLSessionTask *operation, NSError *error) { 
     self.responseHandlers(NO,nil); 
    }]; 
+0

Как вы помещаете «Bearer AccessToken» в свой код, как это делает OP? – coolcool1994